<html>
<head><meta charset="utf-8"><title>lint promotions · edition 2021 · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/index.html">edition 2021</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html">lint promotions</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="221216057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221216057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221216057">(Dec 30 2020 at 14:27)</a>:</h4>
<p>We're currently tracking lint promotions in <a href="https://github.com/rust-lang/rust/issues/80165">#80165</a>. There are several open questions related to lints that you can find in that issue. <br>
I'd first like to figure out if there is consensus on promoting ELLIPSIS_INCLUSIVE_RANGE_PATTERNS and ELIDED_LIFETIMES_IN_PATHS from warn to deny or if an issue on rust-lang/lang-team should be opened in the same vain as for <a href="https://github.com/rust-lang/lang-team/issues/65"><code>BARE_TRAIT_OBJECTS</code></a>.</p>



<a name="221254288"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221254288" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221254288">(Dec 30 2020 at 23:07)</a>:</h4>
<p>As an individual, I'd say that ELLIPSIS_INCLUSIVE_RANGE_PATTERNS should upgrade to an error.  But with my lang hat on, it's probably in the "we don't have a plan to use it for anything so there's not really a need to break people" category.</p>



<a name="221254606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221254606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221254606">(Dec 30 2020 at 23:12)</a>:</h4>
<p>ELIDED_LIFETIMES_IN_PATHS I seem to recall people having some complaints about -- <code>Formatter&lt;'_&gt;</code> comes to mind.  Maybe there'd be a way to split it so we could make the one in return types stricter?</p>



<a name="221415008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221415008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221415008">(Jan 02 2021 at 20:02)</a>:</h4>
<p>I find ELIDED_LIFETIMES_IN_PATHS tricky because as an experienced Rustacean I feel like <code>&lt;'_&gt;</code> is line noise but as a beginner I remember being pretty confused about what things had lifetimes vs what didn't</p>



<a name="221415028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221415028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221415028">(Jan 02 2021 at 20:03)</a>:</h4>
<p>I think it's useful</p>



<a name="221415032"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221415032" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221415032">(Jan 02 2021 at 20:03)</a>:</h4>
<p>There's a supposedly a reason cargo fix --edition-idioms went and added them for 2018</p>



<a name="221415042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221415042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221415042">(Jan 02 2021 at 20:04)</a>:</h4>
<p>as an example, <code>TyCtxt&lt;'_&gt;</code> in the compiler is actually a reference: <a href="https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_middle/ty/context.rs.html#906-908">https://doc.rust-lang.org/nightly/nightly-rustc/src/rustc_middle/ty/context.rs.html#906-908</a><br>
but it would be hard to figure that out without the lifetime staring you in the face</p>



<a name="221419387"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221419387" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221419387">(Jan 02 2021 at 21:54)</a>:</h4>
<p><span class="user-mention silent" data-user-id="226095">Dirkjan Ochtman</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/221415008">said</a>:</p>
<blockquote>
<p>I find ELIDED_LIFETIMES_IN_PATHS tricky because as an experienced Rustacean I feel like <code>&lt;'_&gt;</code> is line noise but as a beginner I remember being pretty confused about what things had lifetimes vs what didn't</p>
</blockquote>
<p>The really important one is <code>fn foo(x: &amp;str) -&gt; Bar</code>.  It's good for that to be <code>fn foo(x: &amp;str) -&gt; Bar&lt;'_&gt;</code> when there's a lifetime so it's clear the output isn't independent of the input.  That also give an opportunity to notice the lifetime in <code>fn foo(&amp;self, x: &amp;str) -&gt; Bar&lt;'_&gt;</code> and double-check that the elision is the lifetime you wanted there.</p>
<p>(Compare something like <code>fn foo(x: Foo&lt;'_&gt;) -&gt; u32</code>, where the <code>&lt;'_&gt;</code> is much less helpful since it's not tied to anything else.)</p>



<a name="221423981"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221423981" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221423981">(Jan 02 2021 at 23:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/221254288">said</a>:</p>
<blockquote>
<p>As an individual, I'd say that ELLIPSIS_INCLUSIVE_RANGE_PATTERNS should upgrade to an error.  But with my lang hat on, it's probably in the "we don't have a plan to use it for anything so there's not really a need to break people" category.</p>
</blockquote>
<p>I feel like it's been a warning for long enough that it'd be nice to go ahead and tell people they need to migrate now, on the off chance they haven't. That would give us the opportunity to just stop parsing it entirely in a future edition.</p>



<a name="221430201"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/221430201" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#221430201">(Jan 03 2021 at 02:57)</a>:</h4>
<p>I'm definitely game to deny-by-default for <code>...</code> use.</p>



<a name="224132921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/224132921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#224132921">(Jan 27 2021 at 02:28)</a>:</h4>
<p>The conversation about variadic generic in IRLO is making me reconsider here and think that <code>...</code> patterns should just become a hard error in 2021.</p>
<p>That way in 2025 we'd be free to use them for variadics.</p>
<p>(Since IIRC we've said we don't want to go from usable-for-one-thing to usable-for-something-else over a single edition boundary)</p>



<a name="224145755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/224145755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#224145755">(Jan 27 2021 at 06:49)</a>:</h4>
<p>No objection; it's been a fairly long time.</p>



<a name="224410639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/224410639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Noah Lev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#224410639">(Jan 28 2021 at 23:43)</a>:</h4>
<p>2025? Do you mean 2024?</p>



<a name="224418255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/224418255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#224418255">(Jan 29 2021 at 00:59)</a>:</h4>
<p>I mean "some time a fair distance in the future, maybe not directly tied to an edition"</p>



<a name="225981270"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225981270" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225981270">(Feb 11 2021 at 12:12)</a>:</h4>
<p><span class="user-mention" data-user-id="310399">@Mara</span> <span class="user-mention" data-user-id="116009">@nikomatsakis</span> I've gone through all the "warn-by-default" lints and seen which ones might make sense to promote to deny (usually the ones labeled as future incompatible). There's quite a few of them, so I'm not sure if opening individual PRs for each of them is the right way to discuss whether want to promote them to deny in Rust 2021. Perhaps we should put this on the lang team's meeting agenda and discuss them all at once? <br>
Here's the list of lints:<br>
WHERE_CLAUSE_OBJECT_SAFETY<br>
ELLIPSIS_INCLUSIVE_RANGE_PATTERNS<br>
BARE_TRAIT_OBJECTS<br>
SAFE_PACKED_BORROWS<br>
CENUM_IMPL_DROP_CAST<br>
COHERENCE_LEAK_CHECK<br>
CLASHING_EXTERN_DECLARATIONS<br>
CONST_EVALUATABLE_UNCHECKED<br>
CONST_ITEM_MUTATION<br>
ILLEGAL_FLOATING_POINT_LITERAL_PATTERN<br>
INDIRECT_STRUCTURAL_MATCH<br>
LATE_BOUND_LIFETIME_ARGUMENTS<br>
MUTABLE_BORROW_RESERVATION_CONFLICT<br>
NONTRIVIAL_STRUCTURAL_MATCH<br>
PRIVATE_IN_PUBLIC<br>
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK<br>
TYPE_ALIAS_BOUNDS<br>
UNINHABITED_STATIC<br>
UNSUPPORTED_NAKED_FUNCTIONS</p>



<a name="225981421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225981421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225981421">(Feb 11 2021 at 12:14)</a>:</h4>
<p>(note: a few that had been previously discussed have been removed as they were "allow-by-default" and we should probably promote them first to "warn-by-default before then possibly moving to "deny-by-default". This would not require an edition though)</p>



<a name="225981810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225981810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mara <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225981810">(Feb 11 2021 at 12:18)</a>:</h4>
<p>oh that's a lot more than those listed in &lt;<a href="https://github.com/rust-lang/rust/issues/80165">https://github.com/rust-lang/rust/issues/80165</a>&gt;. might be good to edit that then.</p>



<a name="225982689"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225982689" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mara <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225982689">(Feb 11 2021 at 12:27)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> do you have edit persmissions for issues?</p>



<a name="225982806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225982806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mara <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225982806">(Feb 11 2021 at 12:28)</a>:</h4>
<p>(if not, we should probably get you those as part of the 2021 team/group/thing)</p>



<a name="225983437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/225983437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#225983437">(Feb 11 2021 at 12:35)</a>:</h4>
<p><span class="user-mention" data-user-id="310399">@Mara</span> I do not unfortunately.</p>



<a name="226496319"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226496319" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226496319">(Feb 16 2021 at 10:29)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> you mentioned a document that had already been started for the lang team meeting on lint promotion. Can you share this with me?</p>



<a name="226496356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226496356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226496356">(Feb 16 2021 at 10:29)</a>:</h4>
<p>Yes!</p>



<a name="226496643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226496643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226496643">(Feb 16 2021 at 10:32)</a>:</h4>
<p><a href="https://hackmd.io/HETreGqPSRezlN109vgCnQ">https://hackmd.io/HETreGqPSRezlN109vgCnQ</a> -- <span class="user-mention" data-user-id="125270">@scottmcm</span> and I were working on this</p>



<a name="226496691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226496691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226496691">(Feb 16 2021 at 10:32)</a>:</h4>
<p>the idea was to add the items in Structure for each one</p>



<a name="226496754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226496754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226496754">(Feb 16 2021 at 10:33)</a>:</h4>
<p>we only gave ourselves 30 minutes and didn't get super far, but I've been meaning to circle back to it</p>



<a name="226497152"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226497152" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226497152">(Feb 16 2021 at 10:36)</a>:</h4>
<p>I'll take a look</p>



<a name="226497421"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226497421" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226497421">(Feb 16 2021 at 10:39)</a>:</h4>
<p>let me know if it makes sense</p>



<a name="226561578"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226561578" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226561578">(Feb 16 2021 at 19:16)</a>:</h4>
<p>I moved the lints from <code>rust-2018-idioms</code> to the top; it looks like there's a reasonable summary of each of those now.</p>
<p>(I'd added some more after our meeting, Niko, don't know if anyone else also added stuff -- does HackMD have history?)</p>



<a name="226638502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226638502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226638502">(Feb 17 2021 at 10:35)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> <span class="user-mention" data-user-id="125270">@scottmcm</span> I've finished getting an overview of the lints (including separating out the future compatibility lints). Do either of you have 15 minutes to go through the list and make sure we remove any that we know we don't want to discuss for inclusion in Rust 2021?</p>



<a name="226667771"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226667771" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226667771">(Feb 17 2021 at 14:58)</a>:</h4>
<p>I don't know that there's consensus on how to treat future-incompatibility with the edition.  Both "well, might as well make them fail since the edition is opt-in" and "but it's not really about the edition because they'll go away on all editions" have their arguments.</p>



<a name="226668054"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226668054" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226668054">(Feb 17 2021 at 15:00)</a>:</h4>
<p>Something to note: some future compatibility warnings do point to becoming hard warnings "in a future edition" as opposed to others that point to a future release. That's something else we should look into.</p>



<a name="226674574"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226674574" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226674574">(Feb 17 2021 at 15:39)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> I have time this morning if you want to go over that list</p>



<a name="226674712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226674712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226674712">(Feb 17 2021 at 15:40)</a>:</h4>
<p>Agreed that it's not clear the best way to treat FCW. i think a good idea might be to kind of enumerate the set of categories we think might be useful.</p>



<a name="226677339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226677339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226677339">(Feb 17 2021 at 15:56)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>: <span class="user-mention" data-user-id="125270">@scottmcm</span> and I are going over the list now</p>



<a name="226679369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226679369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226679369">(Feb 17 2021 at 16:04)</a>:</h4>
<p>oh ok :)</p>



<a name="226679385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226679385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226679385">(Feb 17 2021 at 16:04)</a>:</h4>
<p>let me know the tl;dr</p>



<a name="226682441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226682441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226682441">(Feb 17 2021 at 16:21)</a>:</h4>
<p>I think the core question we hit is that lint policy issue -- does it ever really make sense to make something deny on an edition switch if we're also willing to just make things warn in past editions?</p>



<a name="226682626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226682626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226682626">(Feb 17 2021 at 16:22)</a>:</h4>
<p>Said otherwise, there were a bunch of lints that we "making that deny sounds good, but how do we pick whether doing it on an edition is useful?"</p>



<a name="226691672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691672">(Feb 17 2021 at 17:16)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> I just finished updating the edition RFC and I was thinking about this issue</p>



<a name="226691687"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691687" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691687">(Feb 17 2021 at 17:16)</a>:</h4>
<p>in that RFC I laid out two kinds of changes</p>



<a name="226691739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691739">(Feb 17 2021 at 17:17)</a>:</h4>
<ul>
<li>Migrations -- hard error in new edition, must have automated tooling</li>
<li>Idiom lint -- warn earlier, deny by default in new edition, should have automated tooling</li>
</ul>



<a name="226691762"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691762" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691762">(Feb 17 2021 at 17:17)</a>:</h4>
<p>However, I was thinking about some other use cases and pondering it</p>



<a name="226691822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691822">(Feb 17 2021 at 17:17)</a>:</h4>
<ul>
<li>Automated tooling targets the "intersection" of two editions, and as such may produce non-idiomatic code that gets cleaned up by an edition lint; does it make sense for this to run in all editions, or only in 2021?</li>
</ul>



<a name="226691905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226691905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226691905">(Feb 17 2021 at 17:18)</a>:</h4>
<p>I could not see the <em>harm</em> in having it run in all editions, but I did wonder if deny-by-default was appropriate</p>



<a name="226692027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226692027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226692027">(Feb 17 2021 at 17:19)</a>:</h4>
<p>how much did you explore the space of options?</p>



<a name="226692369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226692369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226692369">(Feb 17 2021 at 17:21)</a>:</h4>
<p>ok, <a href="https://hackmd.io/HETreGqPSRezlN109vgCnQ?view#Options">this is the space of options as I see it</a></p>



<a name="226692429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226692429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226692429">(Feb 17 2021 at 17:22)</a>:</h4>
<table>
<thead>
<tr>
<th>name</th>
<th>2018 and before</th>
<th>2021</th>
<th>automated tooling</th>
</tr>
</thead>
<tbody>
<tr>
<td>migration</td>
<td>warn</td>
<td>hard error</td>
<td>mandatory</td>
</tr>
<tr>
<td></td>
<td>warn</td>
<td>forbid</td>
<td>optional</td>
</tr>
<tr>
<td></td>
<td>warn</td>
<td>deny</td>
<td>optional</td>
</tr>
<tr>
<td></td>
<td>warn</td>
<td>warn</td>
<td>optional</td>
</tr>
<tr>
<td></td>
<td>allow</td>
<td>warn</td>
<td>optional</td>
</tr>
</tbody>
</table>



<a name="226692437"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226692437" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226692437">(Feb 17 2021 at 17:22)</a>:</h4>
<p>(that's in the hackmd)</p>



<a name="226692732"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226692732" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226692732">(Feb 17 2021 at 17:24)</a>:</h4>
<p>I should add some notes on why one might want each option</p>



<a name="226693150"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226693150" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226693150">(Feb 17 2021 at 17:27)</a>:</h4>
<p>XXX just check the hackmd</p>



<a name="226693170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226693170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226693170">(Feb 17 2021 at 17:27)</a>:</h4>
<p>it looks better in the hackmd :)</p>



<a name="226694162"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694162" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694162">(Feb 17 2021 at 17:33)</a>:</h4>
<table>
<thead>
<tr>
<th>name</th>
<th>2018 and before</th>
<th>2021</th>
<th>automated tooling</th>
<th>why would we want this?</th>
</tr>
</thead>
<tbody>
<tr>
<td>migration</td>
<td>warn</td>
<td>hard error or repurposed</td>
<td>mandatory</td>
<td>duh</td>
</tr>
<tr>
<td>warn-forbid</td>
<td>warn</td>
<td>forbid</td>
<td>mandatory</td>
<td>we don't, incoherent</td>
</tr>
<tr>
<td>warn-deny</td>
<td>warn</td>
<td>deny</td>
<td>optional</td>
<td>weak or insufficient migration tooling</td>
</tr>
<tr>
<td>warn-warn</td>
<td>warn</td>
<td>warn</td>
<td>optional</td>
<td>suggestion only in 2021, otherwise just a normal lint</td>
</tr>
<tr>
<td>allow-warn</td>
<td>allow</td>
<td>warn</td>
<td>optional</td>
<td>we don't, incoherent</td>
</tr>
<tr>
<td>bug fix</td>
<td>hard error</td>
<td>hard error</td>
<td>optional</td>
<td>old code was flat out wrong or unsound</td>
</tr>
</tbody>
</table>
<p>Why each option?</p>
<ul>
<li><strong>migration</strong>: hard error ensures people don't do the thing, or allows us to repurpose syntax </li>
<li><strong>warn-forbid</strong>: gives a very strong push to stop using the pattern, since people can't build code that relies on it locally. Avoids breaking dependencies, but then those dependencies are still using the old edition, so that's not relevant (except for the weird case where someone "force publishes" code that won't build locally to <a href="http://crates.io">crates.io</a>). I made automated tooling mandatory because if we are forbidding people from building the code locally we really ought to help them. Conclusion: incoherent.</li>
<li><strong>warn-deny</strong>: deny by default gives a strong push to stop using strong push the pattern, but people can use lint mechanism to make it "allow" temporarily. This option may be useful if we can't get automated tooling good enough.</li>
<li><strong>warn-warn</strong>: this is almost 'just a lint', but perhaps it has some aspects that vary across editions, such as a fix that is specific code in the newer edition. This approach minimizes differences across editions.</li>
<li><strong>allow-warn</strong>: this would permit code in older editions to remain with minimal disturbance. However, if we want to deprecate an older pattern, I'm not sure why we would want that -- presumably we consider the older pattern to be problematic, or we wouldn't have deprecated it. Could be used to "cleanup" bad code produced by automated migrations, but then, why wouldn't we want to cleanup that same code if it were written by hand? Conclusion: incoherent.</li>
<li><strong>bug fix</strong>: some things we categorize as <strong>bug fixes</strong>. They can be done at any time, and they affect all editions equally. We often phase these in using "future compatibility warnings", so that they start out as lints, but we don't have to wait for an edition to mak that change.</li>
</ul>



<a name="226694407"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694407" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694407">(Feb 17 2021 at 17:35)</a>:</h4>
<p>ok, that's my analysis</p>



<a name="226694653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694653">(Feb 17 2021 at 17:36)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> <span class="user-mention" data-user-id="125270">@scottmcm</span> <span class="user-mention" data-user-id="239881">@Josh Triplett</span> <span class="user-mention" data-user-id="116122">@simulacrum</span>  <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span></p>



<a name="226694686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694686">(Feb 17 2021 at 17:36)</a>:</h4>
<p>I'd like to know where you folks disagree (if anywhere)</p>



<a name="226694786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694786">(Feb 17 2021 at 17:37)</a>:</h4>
<p>Do we want to go straight from warn to repurposed without an intervening hard error?</p>



<a name="226694851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694851">(Feb 17 2021 at 17:37)</a>:</h4>
<p>Or at least a deny?</p>



<a name="226694897"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694897" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694897">(Feb 17 2021 at 17:38)</a>:</h4>
<p>I don't see why not</p>



<a name="226694920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694920">(Feb 17 2021 at 17:38)</a>:</h4>
<p>you have to upgrade to Rust 2021 to see it</p>



<a name="226694987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226694987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226694987">(Feb 17 2021 at 17:38)</a>:</h4>
<p>(and we give you warnings on the older edition)</p>



<a name="226695004"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695004" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695004">(Feb 17 2021 at 17:38)</a>:</h4>
<p>didn't we do that with the path changes? I believe we did</p>



<a name="226695014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695014">(Feb 17 2021 at 17:38)</a>:</h4>
<p>Sure, but it means if you just upgrade and start to fix errors, you get weirdness.</p>



<a name="226695062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695062">(Feb 17 2021 at 17:38)</a>:</h4>
<p>I'll separate it out</p>



<a name="226695078"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695078" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695078">(Feb 17 2021 at 17:39)</a>:</h4>
<p>i agree it is 'less good'</p>



<a name="226695089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695089">(Feb 17 2021 at 17:39)</a>:</h4>
<p>We did that with module system changes because we expected almost every case to be compatible.</p>



<a name="226695126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695126">(Feb 17 2021 at 17:39)</a>:</h4>
<p><em>almost</em></p>



<a name="226695141"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695141" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695141">(Feb 17 2021 at 17:39)</a>:</h4>
<p>being the key term :)</p>



<a name="226695149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695149">(Feb 17 2021 at 17:39)</a>:</h4>
<p><em>nod</em></p>



<a name="226695161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695161">(Feb 17 2021 at 17:39)</a>:</h4>
<p>I guess your point is that this may not be considered "repurposing"</p>



<a name="226695191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695191">(Feb 17 2021 at 17:39)</a>:</h4>
<p>Right.</p>



<a name="226695217"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695217" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695217">(Feb 17 2021 at 17:39)</a>:</h4>
<p>I'm ok with that</p>



<a name="226695242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695242">(Feb 17 2021 at 17:39)</a>:</h4>
<p>let's say "hard error or limited repurposing"</p>



<a name="226695357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695357">(Feb 17 2021 at 17:40)</a>:</h4>
<p>That's the distinction I would draw: we could migrate to something mostly compatible with known exceptions, but not to a completely different use of the same syntax.</p>



<a name="226695499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695499">(Feb 17 2021 at 17:41)</a>:</h4>
<p>Along the same lines, I think the "limited repurpose" case doesn't necessarily need tooling.</p>



<a name="226695592"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695592" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695592">(Feb 17 2021 at 17:42)</a>:</h4>
<p>If it works in most cases, and can give clear errors in other cases, that may suffice.</p>



<a name="226695595"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695595" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695595">(Feb 17 2021 at 17:42)</a>:</h4>
<p>so pub macro rules is an example here</p>



<a name="226695603"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695603" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695603">(Feb 17 2021 at 17:42)</a>:</h4>
<p>where we would be repurposing</p>



<a name="226695620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695620">(Feb 17 2021 at 17:42)</a>:</h4>
<p>I would not want to have an edition where we require <code>pub(self)</code></p>



<a name="226695644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695644">(Feb 17 2021 at 17:42)</a>:</h4>
<p>however, I think you are arguing "most of the time it kind of works"</p>



<a name="226695661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695661">(Feb 17 2021 at 17:42)</a>:</h4>
<p>and in particular, if it doesn't, you typically get errors</p>



<a name="226695671"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695671" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695671">(Feb 17 2021 at 17:42)</a>:</h4>
<p>Right. And I don't think we *have" to have tooling to migrate.</p>



<a name="226695702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695702">(Feb 17 2021 at 17:43)</a>:</h4>
<p>I feel we do but it's primarily a question of measurement</p>



<a name="226695725"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695725" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695725">(Feb 17 2021 at 17:43)</a>:</h4>
<p>that is, I consider "identity function" to be automated tooling</p>



<a name="226695758"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695758" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695758">(Feb 17 2021 at 17:43)</a>:</h4>
<p>it's just automated tooling that is not very useful if the pattern is used across &gt;N% of crates :)</p>



<a name="226695791"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695791" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695791">(Feb 17 2021 at 17:43)</a>:</h4>
<p>I believe I wrote 90% in the RFC</p>



<a name="226695800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695800">(Feb 17 2021 at 17:44)</a>:</h4>
<p>Hm, so I guess it feels like allow hard error (i.e. migration but without warn currently) also seems viable, if there's not much that can be done on current edition</p>



<a name="226695885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695885">(Feb 17 2021 at 17:44)</a>:</h4>
<p>I will add, but I think it is explicitly ruled out</p>



<a name="226695899"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695899" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695899">(Feb 17 2021 at 17:44)</a>:</h4>
<p>not sure what you mean by "not much that can be done"</p>



<a name="226695925"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695925" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695925">(Feb 17 2021 at 17:44)</a>:</h4>
<p>like, there is no way to avoid the error because required syntax is not available?</p>



<a name="226695987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226695987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226695987">(Feb 17 2021 at 17:45)</a>:</h4>
<p>I would probably argue that we should ensure there <em>is</em> a way</p>



<a name="226696016"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696016" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696016">(Feb 17 2021 at 17:45)</a>:</h4>
<p>(the <code>k#foo</code> goes in this direction)</p>



<a name="226696033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696033">(Feb 17 2021 at 17:45)</a>:</h4>
<p>but it depends a bit on the specifics I guess</p>



<a name="226696090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696090">(Feb 17 2021 at 17:45)</a>:</h4>
<p>Yes, with that it seems like maybe, but it isn't clear that the k#foo is preferable to doing nothing</p>



<a name="226696171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696171">(Feb 17 2021 at 17:46)</a>:</h4>
<p>(but it's really hard to generalize)</p>



<a name="226696257"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696257" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696257">(Feb 17 2021 at 17:46)</a>:</h4>
<p>it's a bit hypothetical at this juncture <em>but</em></p>



<a name="226696276"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696276" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696276">(Feb 17 2021 at 17:46)</a>:</h4>
<p>our tooling isn't setup for that really</p>



<a name="226696323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696323">(Feb 17 2021 at 17:47)</a>:</h4>
<p>Well we already have the migration lints? So not sure I understand</p>



<a name="226696324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696324">(Feb 17 2021 at 17:47)</a>:</h4>
<p>the expectation is that we target the "intersection" of editions</p>



<a name="226696350"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696350" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696350">(Feb 17 2021 at 17:47)</a>:</h4>
<p>migration lints don't move you to the new edition, is the point</p>



<a name="226696386"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696386" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696386">(Feb 17 2021 at 17:47)</a>:</h4>
<p>how important that is, I don't know. The idea was that you can migrate "bits at a time"</p>



<a name="226696467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696467">(Feb 17 2021 at 17:47)</a>:</h4>
<p>You can't - really - if we have anything that's not the intersection. Hmmm</p>



<a name="226696577"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696577" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696577">(Feb 17 2021 at 17:48)</a>:</h4>
<p>Yeah I think this is a good summary</p>



<a name="226696615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696615">(Feb 17 2021 at 17:48)</a>:</h4>
<p>In any case ,I'm of the opinion that we shouldn't rule out anything, but we should make general rules. "This is the pattern we like, for these reasons." If you can't fit that pattern, we can consider making an exception, but you have to argue against the counter arguments and why they don't apply to your specific case.</p>



<a name="226696637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226696637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226696637">(Feb 17 2021 at 17:49)</a>:</h4>
<p>Yes that seems right</p>



<a name="226697025"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697025" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697025">(Feb 17 2021 at 17:51)</a>:</h4>
<p>I think I would personally recommend migrations (in the sense that we can immediately repurpose syntax, but perhaps we don't till late in that edition's cycle) when possible. I'm not convinced there's much use to warnings getting stronger at edition boundaries, personally, since it feels like if you're not changing your code you wouldn't care about warnings and if you are then we want you to migrate</p>



<a name="226697134"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697134" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697134">(Feb 17 2021 at 17:52)</a>:</h4>
<p>That said, I personally prefer keeping current edition unchanged for X cycles to give people an opportunity to migrate without being forced to hold back their compiler upgrade or add allows</p>



<a name="226697175"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697175" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697175">(Feb 17 2021 at 17:52)</a>:</h4>
<p>on that basis</p>



<a name="226697183"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697183" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697183">(Feb 17 2021 at 17:52)</a>:</h4>
<p>I revised the table</p>



<a name="226697196"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697196" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697196">(Feb 17 2021 at 17:52)</a>:</h4>
<p>to separate out <strong>repurposed</strong></p>



<a name="226697214"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697214" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697214">(Feb 17 2021 at 17:53)</a>:</h4>
<p>but I noted the cases where we make exceptions (e.g., name resolution) and the kinds of criteria we consider when doing so</p>



<a name="226697231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697231">(Feb 17 2021 at 17:53)</a>:</h4>
<p>Is that in hackmd?</p>



<a name="226697245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697245">(Feb 17 2021 at 17:53)</a>:</h4>
<p>I think that's the right way to think about it, rather than trying to pretend they are not a repurpose</p>



<a name="226697256"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697256" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697256">(Feb 17 2021 at 17:53)</a>:</h4>
<p>yes, the lint hackmd for now</p>



<a name="226697259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697259">(Feb 17 2021 at 17:53)</a>:</h4>
<p><a href="https://hackmd.io/HETreGqPSRezlN109vgCnQ?view#Options">https://hackmd.io/HETreGqPSRezlN109vgCnQ?view#Options</a></p>



<a name="226697285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697285">(Feb 17 2021 at 17:53)</a>:</h4>
<p>I imagine that this will become published lang team policy</p>



<a name="226697295"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697295" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697295">(Feb 17 2021 at 17:53)</a>:</h4>
<p>once we settle it down :)</p>



<a name="226697514"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697514" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697514">(Feb 17 2021 at 17:55)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226697025">said</a>:</p>
<blockquote>
<p>I think I would personally recommend migrations (in the sense that we can immediately repurpose syntax, but perhaps we don't till late in that edition's cycle) when possible. I'm not convinced there's much use to warnings getting stronger at edition boundaries, personally, since it feels like if you're not changing your code you wouldn't care about warnings and if you are then we want you to migrate</p>
</blockquote>
<p>I think I agree with this</p>



<a name="226697538"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697538" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697538">(Feb 17 2021 at 17:55)</a>:</h4>
<p>fewer options better</p>



<a name="226697546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697546">(Feb 17 2021 at 17:55)</a>:</h4>
<p>I think warn/warn can be said to be incoherent too, or at least, it feels weird as edition policy</p>



<a name="226697582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697582">(Feb 17 2021 at 17:55)</a>:</h4>
<p>I think it makes sense in the sense of</p>



<a name="226697586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697586">(Feb 17 2021 at 17:55)</a>:</h4>
<p>It seems clear that warnings should give you best suggestion possible for your case</p>



<a name="226697612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697612">(Feb 17 2021 at 17:56)</a>:</h4>
<p>basically this</p>



<a name="226697657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697657">(Feb 17 2021 at 17:56)</a>:</h4>
<p>I guess this fits with my argument that</p>



<a name="226697665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697665">(Feb 17 2021 at 17:56)</a>:</h4>
<p>I am ok deprecating things</p>



<a name="226697691"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697691" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697691">(Feb 17 2021 at 17:56)</a>:</h4>
<p>and the suggeston may be "upgrade to Rust 2021 to gain access to the alternative"</p>



<a name="226697705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697705">(Feb 17 2021 at 17:56)</a>:</h4>
<p>(or perhaps use <code>k#foo</code>)</p>



<a name="226697793"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697793" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697793">(Feb 17 2021 at 17:57)</a>:</h4>
<p>in some sense it seems like we're arguing ourselves away from idiom lints being a thing</p>



<a name="226697804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697804">(Feb 17 2021 at 17:57)</a>:</h4>
<p>I think I disagree with pushing people to upgrade via warnings, but I don't disagree with pushing them to upgrade in other ways</p>



<a name="226697828"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697828" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697828">(Feb 17 2021 at 17:57)</a>:</h4>
<p>What's an example of another way?</p>



<a name="226697862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697862">(Feb 17 2021 at 17:57)</a>:</h4>
<p>Do you mean you disagree <em>specifically</em> with advertising the Edition via warnings?</p>



<a name="226697970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697970">(Feb 17 2021 at 17:58)</a>:</h4>
<p>I think I don't want the experience that stabilizing the edition means people get a bunch of warnings telling them to migrate all of a sudden</p>



<a name="226697977"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697977" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697977">(Feb 17 2021 at 17:58)</a>:</h4>
<p>that seems not great</p>



<a name="226697984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226697984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226697984">(Feb 17 2021 at 17:58)</a>:</h4>
<p>other ways might be e.g. desire to use new features</p>



<a name="226698113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226698113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226698113">(Feb 17 2021 at 17:59)</a>:</h4>
<p>but it seems ungreat to have a "hard date" for people to have to take <em>some action</em> that they likely want to coordinate with (at least) their toolchain team on, e.g. at work</p>



<a name="226731216"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226731216" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226731216">(Feb 17 2021 at 21:49)</a>:</h4>
<p>Is this purely theoretical?</p>



<a name="226731241"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226731241" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226731241">(Feb 17 2021 at 21:49)</a>:</h4>
<p>I'm not sure that we have an example of any actual lints that would require migration</p>



<a name="226731360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226731360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226731360">(Feb 17 2021 at 21:50)</a>:</h4>
<p>If we are not planning on making the lints hard errors in the new edition (I would be ok with just pure warnings, personally), then maybe the idiom lints should just...not be idiom lints, and we should turn them on</p>



<a name="226731670"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226731670" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226731670">(Feb 17 2021 at 21:52)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> you are convincing me that Editions should be <em>just</em> about migrations</p>



<a name="226731852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226731852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226731852">(Feb 17 2021 at 21:54)</a>:</h4>
<p>I like that story.  It's easy to communicate, too.</p>



<a name="226736607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226736607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226736607">(Feb 17 2021 at 22:18)</a>:</h4>
<p>Right, I think this is my position (or one I'm coming to)</p>



<a name="226736893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226736893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226736893">(Feb 17 2021 at 22:21)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226731360">said</a>:</p>
<blockquote>
<p>If we are not planning on making the lints hard errors in the new edition (I would be ok with just pure warnings, personally), then maybe the idiom lints should just...not be idiom lints, and we should turn them on</p>
</blockquote>
<p>To clarify -- I don't think we should turn them on "in the edition" or "in the same release"; if T-lang (or whoever) feels that the lint is right (e.g., deprecating non-dyn using trait objects) then we should just do it across the board. But tying it to the edition muddles our message.</p>
<p>In general, I think this is because I think editions are a poor proxy for "I'm working on my code <em>now</em>" -- that's what we really want for many of these warnings, but we don't have a way to get it today, I think, and that's unfortunate but not really solveable with editions</p>



<a name="226736950"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226736950" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226736950">(Feb 17 2021 at 22:21)</a>:</h4>
<p>It may be that we want a mode in Cargo or some annotation that's basically "maintenance level" of the crate/workspace, which you can use to opt-in to "helpful warnings"</p>



<a name="226737105"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226737105" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226737105">(Feb 17 2021 at 22:22)</a>:</h4>
<p>but if I'm not editing or changing my code, just wanting to keep on modern compilers to get soundness fixes and such, I <em>really</em> don't want to get warnings about syntax, since I need to investigate and allow them etc, and that seems unfortunate, represents high investment as project number grows</p>



<a name="226737508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226737508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226737508">(Feb 17 2021 at 22:25)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> looking at the RFC draft, I think another point of contention may be that because of this "I don't want to get useless warnings on not changing code" principle I'm trying to gesture at, I disagree with "Any code that compiles on edition N without warning will also compile on edition N+1, and with the same semantics."</p>
<p>In particular I <em>don't</em> want a migration to require edition N to have a warning <em>by default</em>; I should opt-in to that warning too. Otherwise we're too forceful IMO.</p>



<a name="226737873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226737873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226737873">(Feb 17 2021 at 22:28)</a>:</h4>
<p>if the crate is just in maintenance mode, does one really care about new warnings?</p>



<a name="226737933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226737933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226737933">(Feb 17 2021 at 22:29)</a>:</h4>
<p>Absolutely. If I get a warning, I may need to take some action; e.g., maybe it's telling me about a soundness bug or other bugfix we're rolling out.</p>



<a name="226738049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226738049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226738049">(Feb 17 2021 at 22:30)</a>:</h4>
<p>i guess i just almost never get a useful warning</p>



<a name="226738126"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226738126" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226738126">(Feb 17 2021 at 22:31)</a>:</h4>
<p>reducing noise when crates are in maintenance mode seems like one of my personal values at least for design</p>



<a name="226738149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226738149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226738149">(Feb 17 2021 at 22:31)</a>:</h4>
<p>and avoiding "spurious" new warnings is part of that</p>



<a name="226747383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747383">(Feb 18 2021 at 00:05)</a>:</h4>
<p>I'm debating</p>



<a name="226747388"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747388" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747388">(Feb 18 2021 at 00:05)</a>:</h4>
<p>I hear what you're saying</p>



<a name="226747397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747397">(Feb 18 2021 at 00:05)</a>:</h4>
<p>I've been resisting it</p>



<a name="226747416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747416">(Feb 18 2021 at 00:05)</a>:</h4>
<p>I'm trying to remember what we did last time :)</p>



<a name="226747420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747420">(Feb 18 2021 at 00:05)</a>:</h4>
<p>it's a question of how pushy we want to be, I guess</p>



<a name="226747451"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747451" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747451">(Feb 18 2021 at 00:06)</a>:</h4>
<p>I'm not sure I buy the 'maintenance mode' though</p>



<a name="226747481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747481">(Feb 18 2021 at 00:06)</a>:</h4>
<p>it feels like a lint group might help here</p>



<a name="226747489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747489">(Feb 18 2021 at 00:06)</a>:</h4>
<p><code>#![allow(style)]</code> or something</p>



<a name="226747497"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747497" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747497">(Feb 18 2021 at 00:06)</a>:</h4>
<p>(where we could classify idiom lints as style)</p>



<a name="226747544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747544">(Feb 18 2021 at 00:06)</a>:</h4>
<p>I guess the question is whether you think it's too much work for a "maintenance mode" crate  to opt into "allow nonstandard style"</p>



<a name="226747589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226747589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226747589">(Feb 18 2021 at 00:07)</a>:</h4>
<p>arguably that's a bit too broad... but I guess an analogous thing might be "allow(rust_2021_style)" or something... although that again gets back to the overloading of edition</p>



<a name="226753729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226753729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226753729">(Feb 18 2021 at 01:27)</a>:</h4>
<p>Right, I think a lint group is part of the story perhaps, but it's unclear to me that we'd want it to be <em>allow</em> vs opt-in, in some sense</p>



<a name="226753815"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226753815" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226753815">(Feb 18 2021 at 01:28)</a>:</h4>
<p>IMO basically the point is that if we add lints that are "stylistic deprecations" (i.e., code is perhaps hard to read but the lint itself doesn't tell you if it's <em>wrong</em>) then we shouldn't lint on maintenance mode code</p>



<a name="226753952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226753952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226753952">(Feb 18 2021 at 01:30)</a>:</h4>
<p>(because it does not add value but does add work to process the new warnings, regardless of how "easy" that is in theory to some extent)</p>



<a name="226753991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226753991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226753991">(Feb 18 2021 at 01:31)</a>:</h4>
<p>there's just some amount of overhead to "upgrading the compiler caused non-silent compilation"</p>



<a name="226770602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226770602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226770602">(Feb 18 2021 at 06:33)</a>:</h4>
<p>So one question is: what is maintenance mode, exactly?</p>
<p>Like, <code>libm</code> is a part of <code>compiler-builtins</code>, which feeds into <code>core</code>. It's very critical to rust. It also hasn't been touched since Jun 8th of last year. And that's <em>fine</em>. And if it did suddenly have a new warning probably no one would notice because it's basically only built as a dependency because basically no one is working on it.</p>



<a name="226792952"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226792952" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226792952">(Feb 18 2021 at 10:48)</a>:</h4>
<p>Well, if we had a monorepo we would</p>



<a name="226793262"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226793262" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226793262">(Feb 18 2021 at 10:51)</a>:</h4>
<p>And we've wanted some set of future compat lints to bypass cap lints, too.</p>



<a name="226803581"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226803581" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226803581">(Feb 18 2021 at 12:39)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> can you summarize where you think this conversation landed? The document lists a bunch of options but I'm having a hard time following what conclusions were reached.</p>



<a name="226826553"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826553" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826553">(Feb 18 2021 at 15:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226793262">said</a>:</p>
<blockquote>
<p>And we've wanted some set of future compat lints to bypass cap lints, too.</p>
</blockquote>
<p>yes but</p>



<a name="226826584"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826584" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826584">(Feb 18 2021 at 15:24)</a>:</h4>
<p>we wanted those to give a useful message</p>



<a name="226826594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826594">(Feb 18 2021 at 15:24)</a>:</h4>
<p>and in particular <strong>you would definitely want them</strong></p>



<a name="226826615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826615">(Feb 18 2021 at 15:24)</a>:</h4>
<p>because those cases where the crate will break</p>



<a name="226826710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826710">(Feb 18 2021 at 15:25)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224872">rylev</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226803581">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> can you summarize where you think this conversation landed? The document lists a bunch of options but I'm having a hard time following what conclusions were reached.</p>
</blockquote>
<p>I don't think it's quite landed yet, but it seems to be heading towards "editions introduce hard errors", and anything else that we want we should just turn on in general as a lint</p>



<a name="226826760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826760">(Feb 18 2021 at 15:25)</a>:</h4>
<p>I guess I can write that up as a concrete proposal. I think I agree with it.</p>



<a name="226826849"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826849" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826849">(Feb 18 2021 at 15:26)</a>:</h4>
<p>I also thikn it's <em>ok</em> to have lints that only trigger in a particular edition, but I'm not quite sure I see the use case yet</p>



<a name="226826922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826922">(Feb 18 2021 at 15:26)</a>:</h4>
<p>I think the key disagreement we have left (maybe) is whether the "current" edition should give you warnings if it'll be a hard error in the next one</p>



<a name="226826935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226826935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226826935">(Feb 18 2021 at 15:26)</a>:</h4>
<p>(I lean towards no)</p>



<a name="226827139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226827139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226827139">(Feb 18 2021 at 15:28)</a>:</h4>
<p>I definitely think it should be. I'd like to hear the reasoning for we shouldn't warn on previous editions. Is this because you believe it will be noisy?</p>



<a name="226827222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226827222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226827222">(Feb 18 2021 at 15:28)</a>:</h4>
<p>I am in favor of grouping all such lints into a lint group which can be turned off.</p>



<a name="226827504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226827504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226827504">(Feb 18 2021 at 15:30)</a>:</h4>
<p>I don't see the advantage for developers to see those warnings if they're just saying "hey you'll need to run rustfix <em>if</em> you migrate"; I think if we're deprecating a pattern and/or migrating folks because we think that code is bad (not sure I have great examples) then it seems like we wouldn't want to tie that to edition at all, it's just a general lint</p>



<a name="226827957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226827957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226827957">(Feb 18 2021 at 15:33)</a>:</h4>
<p>The example of <code>dyn Trait</code> is a good one. We don't want people to write bare traits but we can't enforce that until the transition to a new edition.</p>



<a name="226828163"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828163" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828163">(Feb 18 2021 at 15:35)</a>:</h4>
<p>hm, not sure I follow -- that seems like a case of "non-edition tied warning"</p>



<a name="226828383"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828383" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828383">(Feb 18 2021 at 15:36)</a>:</h4>
<p>there's a separate conversation as to whether we should introduce the lint on "unmaintained" code, but that's largely not related to editions; they're not really a good substitute for maintenance level</p>



<a name="226828499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828499">(Feb 18 2021 at 15:37)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226828163">said</a>:</p>
<blockquote>
<p>hm, not sure I follow -- that seems like a case of "non-edition tied warning"</p>
</blockquote>
<p>The warning does not need to start at an edition boundary, but if we want to deny that syntax out-right, that needs to happen at the edition boundary</p>



<a name="226828636"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828636" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828636">(Feb 18 2021 at 15:38)</a>:</h4>
<p>So it's good to warn folks that they shouldn't use that syntax (we would make it an error for them if we could), but the best we can do is give them a warning and deny it on a future edition</p>



<a name="226828748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828748">(Feb 18 2021 at 15:39)</a>:</h4>
<p>so...</p>



<a name="226828759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828759">(Feb 18 2021 at 15:39)</a>:</h4>
<p>Sure. But that speaks to the pattern that I think I'm proposing, which is:</p>
<ul>
<li>lints can generally be introduced at anytime, though we should think more separately about whether doing so to all code makes sense or if we want to add some sort of maintenance declaration</li>
<li>edition migrations (e.g., banning bare trait) are orthogonal, if we want to add one we don't necessarily warn in previous edition</li>
</ul>
<p>for the latter, for example, in 2015 I wouldn't warn on let async = 3; even though the migration will replace it</p>



<a name="226828772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828772">(Feb 18 2021 at 15:39)</a>:</h4>
<p>let's limit this to the 2021 edition</p>



<a name="226828779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828779">(Feb 18 2021 at 15:39)</a>:</h4>
<p>and not speak in generalities</p>



<a name="226828790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828790">(Feb 18 2021 at 15:39)</a>:</h4>
<p>might be helpful</p>



<a name="226828813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828813">(Feb 18 2021 at 15:39)</a>:</h4>
<p>we have the "closure capture transition"</p>



<a name="226828852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828852">(Feb 18 2021 at 15:39)</a>:</h4>
<p>I think this is a good argument <em>in favor</em> of <span class="user-mention" data-user-id="116122">@simulacrum</span>'s point</p>



<a name="226828853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828853">(Feb 18 2021 at 15:39)</a>:</h4>
<p>sure, concretely for 2021, I don't want lints in 2018 for "your closure will behave differently in 2021"</p>



<a name="226828875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828875">(Feb 18 2021 at 15:39)</a>:</h4>
<p>or do I</p>



<a name="226828881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828881">(Feb 18 2021 at 15:40)</a>:</h4>
<p>that seems useless</p>



<a name="226828946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828946">(Feb 18 2021 at 15:40)</a>:</h4>
<p>so the lint will, concretely, suggest that you put in things like <code>std::lint::capture!(a)</code> etc</p>



<a name="226828957"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828957" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828957">(Feb 18 2021 at 15:40)</a>:</h4>
<p>I'm not sure that's uselesss</p>



<a name="226828969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828969">(Feb 18 2021 at 15:40)</a>:</h4>
<p>it means that if I read code, it reads the same in 2018 and 2021</p>



<a name="226828973"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828973" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828973">(Feb 18 2021 at 15:40)</a>:</h4>
<p><em>however</em></p>



<a name="226828974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226828974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226828974">(Feb 18 2021 at 15:40)</a>:</h4>
<p>hm, I guess, I see that as opt-in</p>



<a name="226829015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829015">(Feb 18 2021 at 15:40)</a>:</h4>
<p>the downside is that I suspect many of those capture calls will not be needed, even though we're doing our best to be careful when we insert them</p>



<a name="226829023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829023">(Feb 18 2021 at 15:40)</a>:</h4>
<p>and that folks in 2021 will remove them</p>



<a name="226829060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829060">(Feb 18 2021 at 15:41)</a>:</h4>
<p>and/or maybe we'll even make it possible for them to just ignore that lint or make it more conservative</p>



<a name="226829094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829094">(Feb 18 2021 at 15:41)</a>:</h4>
<p>I'm not totally sure about what the migrations are for <code>format!</code></p>



<a name="226829099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829099">(Feb 18 2021 at 15:41)</a>:</h4>
<p>I think those are different</p>



<a name="226829109"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829109" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829109">(Feb 18 2021 at 15:41)</a>:</h4>
<p>I think we need to make a distinction between things that we want to discourage across all editions and things that are only issues in a particular edition:</p>
<ul>
<li><code>async</code> being used as an identifier in 2015 is fine because there's nothing wrong with that. I agree we shouldn't warn-by-default just because it will not be allowed in a future edition (though having an allow-by-default lint makes a great deal of sense)</li>
<li><code>dyn Trait</code> is always wrong and we should warn on every edition</li>
</ul>



<a name="226829111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829111">(Feb 18 2021 at 15:41)</a>:</h4>
<p>I think we probably <em>want</em> people to do them</p>



<a name="226829161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829161">(Feb 18 2021 at 15:41)</a>:</h4>
<p><code>async</code> is a good example</p>



<a name="226829169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829169">(Feb 18 2021 at 15:41)</a>:</h4>
<p>I kind of think we <em>should</em> warn :)</p>



<a name="226829227"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829227" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829227">(Feb 18 2021 at 15:42)</a>:</h4>
<p>I guess it depends on how much we want all Rust code, regardless of edition, to read the same</p>



<a name="226829240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829240">(Feb 18 2021 at 15:42)</a>:</h4>
<p>I sort of do</p>



<a name="226829269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829269">(Feb 18 2021 at 15:42)</a>:</h4>
<p>I can certainly see the reverse argument though</p>



<a name="226829287"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829287" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829287">(Feb 18 2021 at 15:42)</a>:</h4>
<p>but basically I don't want you to have to know what edition code is in for the most part, at least when reading</p>



<a name="226829317"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829317" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829317">(Feb 18 2021 at 15:42)</a>:</h4>
<p>(otoh, <code>let async = 22</code> is...pretty clear what it means)</p>



<a name="226829393"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829393" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829393">(Feb 18 2021 at 15:43)</a>:</h4>
<p>ok, I'm wanting to make some categories :)</p>



<a name="226829410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829410">(Feb 18 2021 at 15:43)</a>:</h4>
<p>I think the "editions largely look/read the same" is a valuable argument, and I want it too, but not at the cost of spamming people basically :)</p>



<a name="226829461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829461">(Feb 18 2021 at 15:43)</a>:</h4>
<p>imo e.g. a lint against let async = ... in 2015 would basically feel like a "false positive"</p>



<a name="226829472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829472">(Feb 18 2021 at 15:43)</a>:</h4>
<p>it definitely is in tension with the "upgrade when you are ready, not before" tenet</p>



<a name="226829551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829551">(Feb 18 2021 at 15:44)</a>:</h4>
<p>so it comes down to which is more important</p>



<a name="226829580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829580">(Feb 18 2021 at 15:44)</a>:</h4>
<p>to lean even more into AWS terminology, it's also not a 1-way door</p>



<a name="226829594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829594">(Feb 18 2021 at 15:44)</a>:</h4>
<p>meaning-- if we decide not to warn people</p>



<a name="226829628"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829628" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829628">(Feb 18 2021 at 15:44)</a>:</h4>
<p>and we find that it's becoming confusing to read rust code</p>



<a name="226829635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829635">(Feb 18 2021 at 15:44)</a>:</h4>
<p>we can change course :)</p>



<a name="226829663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829663">(Feb 18 2021 at 15:45)</a>:</h4>
<p>which weakens my opposition</p>



<a name="226829710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829710">(Feb 18 2021 at 15:45)</a>:</h4>
<p>Yes, start as an allow-by-default lint. We can always go to warn-by-default later</p>



<a name="226829921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829921">(Feb 18 2021 at 15:46)</a>:</h4>
<p>Yeah, we can definitely change course. I don't think right now I have lints that I'd want to warn about <em>purely</em> because of differences between editions</p>



<a name="226829962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829962">(Feb 18 2021 at 15:46)</a>:</h4>
<p>I think the closure capture one is the strongest argument</p>



<a name="226829974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829974">(Feb 18 2021 at 15:46)</a>:</h4>
<p>and it's not that strong</p>



<a name="226829996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226829996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226829996">(Feb 18 2021 at 15:46)</a>:</h4>
<p>uniformity across editions you mean?</p>



<a name="226830020"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830020" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830020">(Feb 18 2021 at 15:46)</a>:</h4>
<p>right, I think it's the one where uniformity would be most important</p>



<a name="226830077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830077">(Feb 18 2021 at 15:47)</a>:</h4>
<p>the keyword one doesn't apply as well because you can tell it's not a keyword</p>



<a name="226830100"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830100" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830100">(Feb 18 2021 at 15:47)</a>:</h4>
<p>closures you can't tell, but I hope it doesn't really matter to you</p>



<a name="226830118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830118">(Feb 18 2021 at 15:47)</a>:</h4>
<p>I think it won't</p>



<a name="226830154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830154">(Feb 18 2021 at 15:47)</a>:</h4>
<p>right, and "doesn't matter to you" feels like a high chance of false positives, I think we're going to really want to fine tune it</p>



<a name="226830248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830248">(Feb 18 2021 at 15:48)</a>:</h4>
<p>so I think we have 3 categories</p>



<a name="226830426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830426">(Feb 18 2021 at 15:49)</a>:</h4>
<table>
<thead>
<tr>
<th>name</th>
<th>2018</th>
<th>2021</th>
</tr>
</thead>
<tbody>
<tr>
<td>migrations</td>
<td>opt-in warning</td>
<td>error</td>
</tr>
<tr>
<td>deprecations</td>
<td>warn</td>
<td>warn</td>
</tr>
<tr>
<td>idioms</td>
<td>opt-in warning</td>
<td>warning</td>
</tr>
</tbody>
</table>



<a name="226830434"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830434" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830434">(Feb 18 2021 at 15:49)</a>:</h4>
<p>I'm not sure about idioms</p>



<a name="226830503"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830503" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830503">(Feb 18 2021 at 15:49)</a>:</h4>
<p>What is an example of a 2021 idiom?</p>



<a name="226830573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830573">(Feb 18 2021 at 15:50)</a>:</h4>
<p>For deprecations, I would expect them to be introduced whenever, and I would expect that sometimes the <em>suggestion</em> changes based on edition</p>



<a name="226830608"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830608" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830608">(Feb 18 2021 at 15:50)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224872">rylev</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226830503">said</a>:</p>
<blockquote>
<p>What is an example of a 2021 idiom?</p>
</blockquote>
<p>I'm not sure I have one :)</p>



<a name="226830633"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830633" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830633">(Feb 18 2021 at 15:50)</a>:</h4>
<p>I guess one thing might be</p>



<a name="226830652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830652">(Feb 18 2021 at 15:50)</a>:</h4>
<p>if there was a deprecation where the <em>fix</em> requires the new edition for some reason</p>



<a name="226830673"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830673" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830673">(Feb 18 2021 at 15:50)</a>:</h4>
<p>and we're going to lean against "spamming" people</p>



<a name="226830702"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830702" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830702">(Feb 18 2021 at 15:50)</a>:</h4>
<p>that is, the idiomatic fix, not just "add an allow"</p>



<a name="226830749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830749">(Feb 18 2021 at 15:51)</a>:</h4>
<p>kind of a special case of deprecation</p>



<a name="226830810"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830810" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830810">(Feb 18 2021 at 15:51)</a>:</h4>
<p>the other thing I have in my mind is "cleaning up" the changes made by migrations</p>



<a name="226830822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830822">(Feb 18 2021 at 15:51)</a>:</h4>
<p>e.g., maybe you rewrite things to a <code>k#foo</code> keyword</p>



<a name="226830846"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830846" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830846">(Feb 18 2021 at 15:51)</a>:</h4>
<p>and then in the new edition, you change it to <code>foo</code></p>



<a name="226830881"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830881" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830881">(Feb 18 2021 at 15:52)</a>:</h4>
<p>ok, I guess that's it :)</p>



<a name="226830949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830949">(Feb 18 2021 at 15:52)</a>:</h4>
<p>IMO that should be opt-in, but perhaps sort of "done for you", i.e., we migrate your code and automatically insert a #![warn(...)] at the top of your crate</p>



<a name="226830956"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830956" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830956">(Feb 18 2021 at 15:52)</a>:</h4>
<p>I do feel like we are going to introduce "suboptimal" syntax in order to expose features earlier</p>



<a name="226830961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226830961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226830961">(Feb 18 2021 at 15:52)</a>:</h4>
<p>and you can just delete it</p>



<a name="226831008"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831008" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831008">(Feb 18 2021 at 15:52)</a>:</h4>
<p>that...why?</p>



<a name="226831058"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831058" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831058">(Feb 18 2021 at 15:52)</a>:</h4>
<p>that seems surprising to me, trying to figure out why</p>



<a name="226831099"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831099" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831099">(Feb 18 2021 at 15:53)</a>:</h4>
<p>I guess it seems inconsistent with other cases where we enforce style lints by default</p>



<a name="226831125"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831125" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831125">(Feb 18 2021 at 15:53)</a>:</h4>
<p>well, if we're going to have it on by default that seems fine</p>



<a name="226831164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831164">(Feb 18 2021 at 15:53)</a>:</h4>
<p>I would think it's "warn by default in 2021 edition"</p>



<a name="226831179"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831179" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831179">(Feb 18 2021 at 15:53)</a>:</h4>
<p>there's no point in warning you about in 2018</p>



<a name="226831202"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831202" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831202">(Feb 18 2021 at 15:53)</a>:</h4>
<p>since using <code>k#foo</code> is the <em>right thing to do there</em></p>



<a name="226831303"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831303" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831303">(Feb 18 2021 at 15:54)</a>:</h4>
<p>yes, but even there, the lint should either rarely fire or be for the "rare case" we can't migrate you automatically</p>



<a name="226831339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831339">(Feb 18 2021 at 15:54)</a>:</h4>
<p>to be clear</p>



<a name="226831349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831349">(Feb 18 2021 at 15:54)</a>:</h4>
<p>lints are how we migrate you :)</p>



<a name="226831400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831400">(Feb 18 2021 at 15:54)</a>:</h4>
<p>I'm expecting such lints would have machine-applicable suggestions</p>



<a name="226831406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831406">(Feb 18 2021 at 15:54)</a>:</h4>
<p>well, those lints are enabled via CLI flag or something by rustfix</p>



<a name="226831440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831440">(Feb 18 2021 at 15:55)</a>:</h4>
<p>but they're not -- necessarily -- on by default in any edition</p>



<a name="226831481"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831481" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831481">(Feb 18 2021 at 15:55)</a>:</h4>
<p>yes. I think these ones should just be on.</p>



<a name="226831498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831498">(Feb 18 2021 at 15:55)</a>:</h4>
<p>to remind you to run rustfix in case you don't follow the book :)</p>



<a name="226831543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831543">(Feb 18 2021 at 15:55)</a>:</h4>
<p>hm, I guess maybe to be more concrete</p>



<a name="226831551"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831551" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831551">(Feb 18 2021 at 15:55)</a>:</h4>
<p>but if you do the procedure, you won't see them</p>



<a name="226831554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831554">(Feb 18 2021 at 15:55)</a>:</h4>
<p>which ones?</p>



<a name="226831845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831845">(Feb 18 2021 at 15:57)</a>:</h4>
<p>let me try to write it out, but I have a call in 2 minutes...</p>



<a name="226831875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226831875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226831875">(Feb 18 2021 at 15:57)</a>:</h4>
<p>/me is finding this conversation hard to follow. He's not sure why.</p>



<a name="226832161"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832161" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832161">(Feb 18 2021 at 15:59)</a>:</h4>
<p>I think we're in agreement fwiw :)</p>



<a name="226832187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832187">(Feb 18 2021 at 15:59)</a>:</h4>
<p>I think we are too</p>



<a name="226832221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832221">(Feb 18 2021 at 15:59)</a>:</h4>
<p>I will try to make a quick write-up</p>



<a name="226832231"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832231" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832231">(Feb 18 2021 at 15:59)</a>:</h4>
<p>and also to include specific examples</p>



<a name="226832252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832252">(Feb 18 2021 at 15:59)</a>:</h4>
<p>I find this much easier to follow with specific lints in mind</p>



<a name="226832272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226832272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226832272">(Feb 18 2021 at 15:59)</a>:</h4>
<p>feeling good about it, though</p>



<a name="226868869"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226868869" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226868869">(Feb 18 2021 at 19:46)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/268952-edition/topic/lint.20promotions/near/226830426">said</a>:</p>
<blockquote>
<table>
<thead>
<tr>
<th>name</th>
<th>2018</th>
<th>2021</th>
</tr>
</thead>
<tbody>
<tr>
<td>migrations</td>
<td>opt-in warning</td>
<td>error</td>
</tr>
<tr>
<td>deprecations</td>
<td>warn</td>
<td>warn</td>
</tr>
<tr>
<td>idioms</td>
<td>opt-in warning</td>
<td>warning</td>
</tr>
</tbody>
</table>
</blockquote>
<p>Just saw this table in passing -- wouldn't it be an on-by-default warning in 2018 for migrations?</p>



<a name="226873630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226873630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226873630">(Feb 18 2021 at 20:19)</a>:</h4>
<p>no, there's no reason to tell people about the edition for migrations - or at least, that's my position. they'll get enabled during migration, but there's no reason to "spam" people telling them about the edition being ready</p>



<a name="226887635"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226887635" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226887635">(Feb 18 2021 at 21:57)</a>:</h4>
<p>Hmm, I guess I'm thinking of the migrations from things that are already deprecated.  (Which I feel like will be the usual case, but maybe for things like keyword reservations it's not the only one?)</p>



<a name="226887816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226887816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226887816">(Feb 18 2021 at 21:58)</a>:</h4>
<p>if they're deprecated then line 2 applies, though I suppose we'd sort of have:</p>
<ul>
<li>deprecated and migrating: warn, error</li>
</ul>



<a name="226949351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/226949351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#226949351">(Feb 19 2021 at 11:10)</a>:</h4>
<p>I did intend the rows to be non-exclusive</p>



<a name="227401102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227401102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227401102">(Feb 23 2021 at 09:16)</a>:</h4>
<p>Argh, sorry y'all, I got caught up in working on the <a href="https://nikomatsakis.github.io/wg-async-foundations/vision.html">Async Vision Doc</a> and failed to write the summary -- going to take a stab at that now</p>



<a name="227405290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227405290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227405290">(Feb 23 2021 at 09:54)</a>:</h4>
<p>hacking <a href="https://hackmd.io/i1Ob4XS6TwuUv-rOVEoM4A">here</a> -- as always, this is harder than it seemed at first :)</p>



<a name="227415242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227415242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227415242">(Feb 23 2021 at 11:24)</a>:</h4>
<p>OK -- this is ready for review. I went ahead and gave it the structure of a simple RFC:</p>
<p><a href="https://hackmd.io/i1Ob4XS6TwuUv-rOVEoM4A?view">https://hackmd.io/i1Ob4XS6TwuUv-rOVEoM4A?view</a></p>



<a name="227418568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227418568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227418568">(Feb 23 2021 at 11:56)</a>:</h4>
<p>This looks great to me. I personally think putting it up as an RFC makes sense. I do think it highlights my desire to me at least for a "I care about new warnings" mechanism of some kind - but it's definitely not really addressable in this doc. :)</p>



<a name="227447484"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227447484" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227447484">(Feb 23 2021 at 15:22)</a>:</h4>
<p>I agree that there is a desire for a feature like that</p>



<a name="227457168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227457168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227457168">(Feb 23 2021 at 16:15)</a>:</h4>
<p>Looking good but I still have questions (that I also let as comments in the hackmd):</p>
<ul>
<li>What is the distinction between errors and deny-by-default lints? </li>
<li>Can soft deprecations be "promoted" to errors?</li>
</ul>



<a name="227465629"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227465629" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227465629">(Feb 23 2021 at 17:03)</a>:</h4>
<p>So <span class="user-mention" data-user-id="224872">@rylev</span> I think the answer is</p>
<ul>
<li>deny-by-default is not a recommended end-state, though it might be an option if we want to push harder against a pattern without breaking dependencies; I wouldn't move to deny-by-default in a new edition, though.</li>
<li>can soft deprecations be promoted to hard ones? yes, but I think we don't yet have a good handle on the times when we want to do that.</li>
</ul>



<a name="227465819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227465819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227465819">(Feb 23 2021 at 17:04)</a>:</h4>
<blockquote>
<p>deny-by-default is not a recommended end-state </p>
</blockquote>
<p>You should expand on this in the document I think and reconcile it with the existing deby-by-default lints</p>



<a name="227465970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227465970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227465970">(Feb 23 2021 at 17:05)</a>:</h4>
<blockquote>
<p>can soft deprecations be promoted to hard ones? yes, but I think we don't yet have a good handle on the times when we want to do that.</p>
</blockquote>
<p>We should talk about this since bare trait objects are likely to head in this direction</p>



<a name="227465995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227465995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227465995">(Feb 23 2021 at 17:05)</a>:</h4>
<p>Yes</p>



<a name="227466113"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466113" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466113">(Feb 23 2021 at 17:06)</a>:</h4>
<p>I think there's an argument for moving to hard deprecations more aggressively</p>



<a name="227466137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466137">(Feb 23 2021 at 17:06)</a>:</h4>
<p>I guess there are 3 options</p>



<a name="227466272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466272">(Feb 23 2021 at 17:07)</a>:</h4>
<ul>
<li>stay soft deprecated forever</li>
<li>hard deprecate but only after warning has been in place for some period of time (N months?)</li>
<li>hard deprecate all deprecations in the next edition</li>
</ul>



<a name="227466309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466309">(Feb 23 2021 at 17:07)</a>:</h4>
<p>the question often comes up "is it ok if the lint only started firing in the same release as the edition"</p>



<a name="227466330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466330">(Feb 23 2021 at 17:07)</a>:</h4>
<p>personally, I don't see a problem, but it also seems like a red herring</p>



<a name="227466372"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466372" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466372">(Feb 23 2021 at 17:07)</a>:</h4>
<p>unless the time period is measured in years</p>



<a name="227466442"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466442" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466442">(Feb 23 2021 at 17:08)</a>:</h4>
<p>or even editons</p>



<a name="227466492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466492">(Feb 23 2021 at 17:08)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/227466113">said</a>:</p>
<blockquote>
<p>I think there's an argument for moving to hard deprecations more aggressively</p>
</blockquote>
<p>we should lay out the motivations <em>for</em> being aggressive though</p>



<a name="227466663"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466663" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466663">(Feb 23 2021 at 17:09)</a>:</h4>
<blockquote>
<p>hard deprecate but only after warning has been in place for some period of time (N months?)</p>
</blockquote>
<p>Correct me if I'm wrong but don't soft to hard deprecations have to happen on edition boundaries?</p>



<a name="227466965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466965">(Feb 23 2021 at 17:11)</a>:</h4>
<p>yes</p>



<a name="227466978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227466978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227466978">(Feb 23 2021 at 17:11)</a>:</h4>
<p>that's implied by the description</p>



<a name="227467051"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467051" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467051">(Feb 23 2021 at 17:12)</a>:</h4>
<p>point is -- what are the conditions in which we can introduce a hard deprecation?</p>



<a name="227467082"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467082" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467082">(Feb 23 2021 at 17:12)</a>:</h4>
<p>personally I think we can just always do it</p>



<a name="227467092"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467092" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467092">(Feb 23 2021 at 17:12)</a>:</h4>
<p>nobody is forced to upgrade to a new edition, after all</p>



<a name="227467127"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467127" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467127">(Feb 23 2021 at 17:12)</a>:</h4>
<p>so the main question is when we <em>want</em> to</p>



<a name="227467154"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467154" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467154">(Feb 23 2021 at 17:12)</a>:</h4>
<p>(versus just giving warnings indefinitely)</p>



<a name="227467262"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467262" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467262">(Feb 23 2021 at 17:13)</a>:</h4>
<p>Yes. I think what's missing here maybe is a description of what various things lints are for. Lints meant for imposing good style or preventing mistakes that aren't always mistakes remain soft, but when it comes to "fixing code" that is now considered incorrect, we should always aim to error</p>



<a name="227467511"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227467511" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227467511">(Feb 23 2021 at 17:15)</a>:</h4>
<p>Does this mean deny-by-default lints shouldn't exist ideally? What about the "arithmetic-overflow" lint?</p>



<a name="227480275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227480275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227480275">(Feb 23 2021 at 18:32)</a>:</h4>
<p>I think deny-by-default is also appropriate for things like are error-like but are too heuristic to be good to <em>require</em> as part of a spec.</p>



<a name="227480430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227480430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227480430">(Feb 23 2021 at 18:33)</a>:</h4>
<p>Like rust-the-spec says "overflow wraps in release", but that doesn't mean it shouldn't still have a lint for "this always overflows, which sounds like it's not what you wanted" which is still deny-by-default.</p>



<a name="227481662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227481662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227481662">(Feb 23 2021 at 18:40)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Ryan and I got a starting point for discussion on all the idiom lints in <a href="https://hackmd.io/@nikomatsakis/SJggBfQbd">https://hackmd.io/@nikomatsakis/SJggBfQbd</a></p>
<p>(At least one of those are more "well here's where the discussion can start" more than "I personally have great confidence that this is what we want", though -- a few seem like they'll need discussion in the meeting.)</p>



<a name="227485739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485739">(Feb 23 2021 at 19:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125270">scottmcm</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/227480430">said</a>:</p>
<blockquote>
<p>Like rust-the-spec says "overflow wraps in release", but that doesn't mean it shouldn't still have a lint for "this always overflows, which sounds like it's not what you wanted" which is still deny-by-default.</p>
</blockquote>
<p>I'm not totally convinced, but this is interesting</p>



<a name="227485754"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485754" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485754">(Feb 23 2021 at 19:05)</a>:</h4>
<p>I was going over the deny-by-default lints</p>



<a name="227485780"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485780" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485780">(Feb 23 2021 at 19:05)</a>:</h4>
<p>It seems to me like they could virtually all be "hard deprecations"</p>



<a name="227485853"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485853" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485853">(Feb 23 2021 at 19:06)</a>:</h4>
<p>it also seems to me that there's the "consistency across editions" rule, if faithfully applied, might say that hard deprecations should be</p>
<table>
<thead>
<tr>
<th>Rust 2018</th>
<th>Rust 2021</th>
</tr>
</thead>
<tbody>
<tr>
<td>deny-by-default</td>
<td>error</td>
</tr>
</tbody>
</table>



<a name="227485942"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485942" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485942">(Feb 23 2021 at 19:06)</a>:</h4>
<p>the argument here is basically that a hard deprecation is <em>almost</em> a bug-fix</p>



<a name="227485968"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485968" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485968">(Feb 23 2021 at 19:06)</a>:</h4>
<p>and not really tied to the edition in paricular</p>



<a name="227485998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227485998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227485998">(Feb 23 2021 at 19:06)</a>:</h4>
<p>(like a bug fix, it might transition in via a warning period)</p>



<a name="227486720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227486720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227486720">(Feb 23 2021 at 19:11)</a>:</h4>
<p>To try to elaborate on this a bit more: I know the C# spec has to spend a few pages on "what exactly are the rules for things like when <code>while (expr)</code> is infinite".  So I see this like how we've just said "<code>while</code> isn't ever infinite, to the language", but still want <em>lints</em> about "you know that condition's always true/false, so this bit of code is unreachable".</p>



<a name="227486872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227486872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227486872">(Feb 23 2021 at 19:12)</a>:</h4>
<p>Or abstracting again, I think there's a place for flow-sensitive <code>deny</code> lints that we wouldn't want to be hard errors.</p>



<a name="227487819"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227487819" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Eric Huss <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227487819">(Feb 23 2021 at 19:19)</a>:</h4>
<p>FWIW, I wrote guidelines on lint levels and such (<a href="https://rustc-dev-guide.rust-lang.org/diagnostics.html#lints-versus-fixed-diagnostics">lint vs fixed</a> and <a href="https://rustc-dev-guide.rust-lang.org/diagnostics.html#diagnostic-levels">levels</a>).  If ya'll come up with better guidelines, I think it would be nice to update that.</p>



<a name="227576638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227576638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227576638">(Feb 24 2021 at 10:21)</a>:</h4>
<p><span class="user-mention" data-user-id="120518">@Eric Huss</span> thanks for the pointer! sorry I wasn't aware of that</p>



<a name="227576949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227576949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227576949">(Feb 24 2021 at 10:23)</a>:</h4>
<p>Reading the comments, I'm thinking two things:</p>



<a name="227577074"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577074" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577074">(Feb 24 2021 at 10:24)</a>:</h4>
<p>Hmm</p>



<a name="227577359"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577359" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577359">(Feb 24 2021 at 10:27)</a>:</h4>
<table>
<thead>
<tr>
<th>name</th>
<th>Edition N</th>
<th>Edition N+1</th>
<th>Migrations?</th>
</tr>
</thead>
<tbody>
<tr>
<td>repurposed syntax</td>
<td>opt-in warning</td>
<td>new meaning</td>
<td>mandatory</td>
</tr>
<tr>
<td>removed syntax (or semantics)</td>
<td>opt-in warning</td>
<td>error</td>
<td>mandatory</td>
</tr>
<tr>
<td>soft deprecations</td>
<td>warn</td>
<td>warn</td>
<td>recommended</td>
</tr>
<tr>
<td>hard deprecations</td>
<td>warn -&gt; deny</td>
<td>warn -&gt; deny</td>
<td>recommended</td>
</tr>
<tr>
<td>bug fix</td>
<td>warn -&gt; error</td>
<td>warn -&gt; error</td>
<td>recommended</td>
</tr>
</tbody>
</table>



<a name="227577371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577371">(Feb 24 2021 at 10:27)</a>:</h4>
<p>maybe this</p>



<a name="227577492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577492">(Feb 24 2021 at 10:28)</a>:</h4>
<p>it's plausible that we remove syntax without deprecating it</p>



<a name="227577508"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577508" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577508">(Feb 24 2021 at 10:28)</a>:</h4>
<p>although I find that a bit of a stretch</p>



<a name="227577525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577525">(Feb 24 2021 at 10:28)</a>:</h4>
<p>I'm trying to think of an example</p>



<a name="227577554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577554">(Feb 24 2021 at 10:29)</a>:</h4>
<p>I'm trying to decide, <span class="user-mention" data-user-id="125270">@scottmcm</span>, what I think about your examples of "Deny by default" lints that might stay that way forever</p>



<a name="227577594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577594">(Feb 24 2021 at 10:29)</a>:</h4>
<p>I feel like it violates one of my "lint tenets", which is that there should always be a better way to write the code that doesn't trigger the lint</p>



<a name="227577622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577622">(Feb 24 2021 at 10:29)</a>:</h4>
<p>I'm not 100% sure how much I believe in that tenet, I've sometimes argued against it, but I've definitely observed that people like it :)</p>



<a name="227577708"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577708" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577708">(Feb 24 2021 at 10:30)</a>:</h4>
<p>maybe it doesn't apply in the case of "code that is <em>almost certainly</em> a bug"</p>



<a name="227577755"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577755" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577755">(Feb 24 2021 at 10:30)</a>:</h4>
<p>but I think that e.g. for overflowing literals, I'd rather that we advised people to move from <code>255_u8 + 22_u8</code> to <code>25_u8.overflowing_add(22_u8)</code> or whatever that methods is called</p>



<a name="227577795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227577795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227577795">(Feb 24 2021 at 10:31)</a>:</h4>
<p>let me review the categorizations you + <span class="user-mention" data-user-id="224872">@rylev</span> did, it might affect my opinion</p>



<a name="227808562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227808562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227808562">(Feb 25 2021 at 17:51)</a>:</h4>
<p>you mean <code>wrapping_add</code></p>



<a name="227808795"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227808795" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jubilee <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227808795">(Feb 25 2021 at 17:53)</a>:</h4>
<p>or possibly <code>checked_add</code>, because you can't simply move to <code>overflowing_add</code>, because that returns a tuple instead of a Some(u8) / None, so you have to... well, you have to deconstruct the tuple anyways. There are unfortunately quite a lot of different methods that are "do something specific on hitting the numeric bounds" like that.</p>



<a name="227955371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227955371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227955371">(Feb 26 2021 at 16:46)</a>:</h4>
<p>I meant <code>wrapping_add</code>, yes</p>



<a name="227955401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227955401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227955401">(Feb 26 2021 at 16:47)</a>:</h4>
<p>but actually my example was flawed</p>



<a name="227955426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227955426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227955426">(Feb 26 2021 at 16:47)</a>:</h4>
<p>I think the lint in question was for literals like <code>257u8</code></p>



<a name="227955469"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227955469" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227955469">(Feb 26 2021 at 16:47)</a>:</h4>
<p>so <span class="user-mention" data-user-id="125270">@scottmcm</span>, <span class="user-mention" data-user-id="224872">@rylev</span> -- there is some follow-up needed from the last meeting to consolidate thinking etc</p>



<a name="227961978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/227961978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#227961978">(Feb 26 2021 at 17:33)</a>:</h4>
<p>Yes, there were lints we didn't get to and we never addressed future compatibility lints which while not strictly an edition topic, are an interesting lint topic for discussion.</p>



<a name="228214345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228214345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228214345">(Mar 01 2021 at 11:26)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> <span class="user-mention" data-user-id="125270">@scottmcm</span> can we set a meeting to regroup on the current state and decide if we need the lang team to continue the discussion? (Maybe a 15 minute sync with the three of us on Zulip or Zoom?)</p>



<a name="228253265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228253265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228253265">(Mar 01 2021 at 15:50)</a>:</h4>
<p>I think that's a good idea and I was going to suggest something similar</p>



<a name="228253285"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228253285" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228253285">(Mar 01 2021 at 15:50)</a>:</h4>
<p>I'd prefer Zulip I think</p>



<a name="228253378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228253378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228253378">(Mar 01 2021 at 15:51)</a>:</h4>
<p>it might be hard to find a time that works for everyone</p>



<a name="228253632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228253632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228253632">(Mar 01 2021 at 15:52)</a>:</h4>
<p>I could do <time datetime="2021-03-02T19:30:00Z">2021-03-02T14:30:00-05:00</time>, but that may be too late for you, <span class="user-mention" data-user-id="224872">@rylev</span> ?</p>



<a name="228253904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228253904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228253904">(Mar 01 2021 at 15:54)</a>:</h4>
<p>Works for me. I usually work late on Tuesdays anyway <span aria-label="blush" class="emoji emoji-1f60a" role="img" title="blush">:blush:</span></p>



<a name="228283710"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228283710" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228283710">(Mar 01 2021 at 18:40)</a>:</h4>
<p>Unfortunately that's exactly when standup is for my $RealJob.  Any chance of a different time?  My entire tuesday is open except for that slot <span aria-label="sweat smile" class="emoji emoji-1f605" role="img" title="sweat smile">:sweat_smile:</span></p>



<a name="228447612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228447612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228447612">(Mar 02 2021 at 17:14)</a>:</h4>
<p>I could do <time datetime="2021-03-02T20:00:00Z">2021-03-02T15:00:00-05:00</time> if that works for <span class="user-mention" data-user-id="224872">@rylev</span></p>



<a name="228447658"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228447658" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228447658">(Mar 02 2021 at 17:14)</a>:</h4>
<p>That's fine</p>



<a name="228447685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228447685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228447685">(Mar 02 2021 at 17:15)</a>:</h4>
<p>ok, updated calendar invite</p>



<a name="228466033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228466033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228466033">(Mar 02 2021 at 19:01)</a>:</h4>
<p>When did the meeting end up being scheduled for?</p>



<a name="228466362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228466362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228466362">(Mar 02 2021 at 19:03)</a>:</h4>
<p><time datetime="2021-03-02T20:00:00Z">2021-03-02T21:00:00+01:00</time></p>



<a name="228466945"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228466945" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228466945">(Mar 02 2021 at 19:07)</a>:</h4>
<p>So, 54 minutes from now?</p>



<a name="228466996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228466996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228466996">(Mar 02 2021 at 19:07)</a>:</h4>
<p>Ah, OK. That's at the same time as the Cargo meeting, so I won't be able to join. That's alright; I look forward to seeing the result.</p>



<a name="228469433"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228469433" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228469433">(Mar 02 2021 at 19:23)</a>:</h4>
<p>I would be interested in joining, but mostly because I likely have feelings :)</p>



<a name="228471391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228471391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228471391">(Mar 02 2021 at 19:35)</a>:</h4>
<p>Is there any planned change to the proposal of "make individual PRs for lints and FCP them"?</p>



<a name="228475191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475191">(Mar 02 2021 at 19:59)</a>:</h4>
<p>I don't believe we've reached 100% consensus but I'd personally like to create a single PR for all edition related lints</p>



<a name="228475431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475431">(Mar 02 2021 at 20:00)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> were we going to use Zoom or another video app?</p>



<a name="228475517"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475517" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475517">(Mar 02 2021 at 20:01)</a>:</h4>
<p>I guess I didn't specify</p>



<a name="228475573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475573">(Mar 02 2021 at 20:01)</a>:</h4>
<p>we can just use the zoom room from the lang team invite?</p>



<a name="228475617"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475617" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475617">(Mar 02 2021 at 20:01)</a>:</h4>
<p>I don't think we plan to record, right?</p>



<a name="228475714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475714">(Mar 02 2021 at 20:02)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> <span aria-label="point up" class="emoji emoji-1f446" role="img" title="point up">:point_up:</span></p>



<a name="228475720"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475720" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475720">(Mar 02 2021 at 20:02)</a>:</h4>
<p>I don't think there's a need to record. We'll note everything of importance separately</p>



<a name="228475865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228475865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228475865">(Mar 02 2021 at 20:03)</a>:</h4>
<p><a href="https://hackmd.io/7YycPi5ORhiXbualfhaQRw">https://hackmd.io/7YycPi5ORhiXbualfhaQRw</a></p>



<a name="228564939"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228564939" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228564939">(Mar 03 2021 at 10:00)</a>:</h4>
<p>Did we reach consensus on <code>ELIDED_LIFETIMES_IN_PATHS</code>? Are we going to split the lint? I suppose this is not an edition question though since neither split lint will become an error in 2021.</p>



<a name="228566562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228566562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228566562">(Mar 03 2021 at 10:12)</a>:</h4>
<p>I've <a href="https://github.com/rust-lang/rust/issues/80165#issuecomment-789598616">updated the tracking issue</a>. Only <code>BARE_TRAIT_OBJECTS</code> and <code>ELLIPSIS_INCLUSIVE_RANGE_PATTERNS</code> will be promoted to errors in Rust 2021. Everything else can either be left to a later edition or are not actually edition related.</p>



<a name="228566654"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228566654" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228566654">(Mar 03 2021 at 10:13)</a>:</h4>
<p>I believe we'll want to circle back around with the lang team one last time to close this out. Shall I nominate the tracking issue again?</p>



<a name="228567965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228567965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228567965">(Mar 03 2021 at 10:19)</a>:</h4>
<p>(btw all the future compatibility lints are indeed bug fixes and can be turned into errors for all editions at any time - so they're not relevant for the edition discussion)</p>



<a name="228594749"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228594749" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228594749">(Mar 03 2021 at 13:56)</a>:</h4>
<p>There are two deny-by-default lints that <em>might</em> make sense for promotion to hard errors: <code>USELESS_DEPRECATED</code> and <code>NO_MANGLE_CONST_ITEMS</code>. These aren't future compatbility lints but there's no reason one should write them. Thoughts?</p>



<a name="228598911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228598911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228598911">(Mar 03 2021 at 14:20)</a>:</h4>
<p>I'm struggling to find any information on either of those, but making them hard errors like we have with inline, used, etc. in similar places feels at least consistent, even if I'm still not sure that it's the right decision.</p>



<a name="228628131"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228628131" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228628131">(Mar 03 2021 at 17:04)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224872">rylev</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/228564939">said</a>:</p>
<blockquote>
<p>Did we reach consensus on <code>ELIDED_LIFETIMES_IN_PATHS</code>? Are we going to split the lint? I suppose this is not an edition question though since neither split lint will become an error in 2021.</p>
</blockquote>
<p>I think we decided to split it so that we'd get more information about which parts people are <code>allow</code>ing, and potentally to be stricter about the parts with broad agreement.</p>
<p>I don't know that we had a clear decision about what the split actually <em>should be</em>, though.</p>
<ul>
<li>My proposal is still that it be "ones which participate in elision" vs "those which are unconstrained", so <code>fn foo(x: Ref&lt;T&gt;) -&gt; &amp;T</code> would lint the <code>Ref&lt;T&gt;</code> should be <code>Ref&lt;'_, T&gt;</code>.</li>
<li>Alternatively,<ul>
<li>Those in the return type vs those in arguments (which is subset of the previous, as unnamed lifetimes are only allowed in the return type when elided)</li>
<li>Between "top-level" lifetimes and those that are "covered" by another lifetime (typically a <code>&amp;</code>, like <code>&amp;Formatter</code>)</li>
</ul>
</li>
</ul>



<a name="228630999"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228630999" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228630999">(Mar 03 2021 at 17:21)</a>:</h4>
<p>I agree with "lifetimes that participate in elison", though I also would like the qualifier "and aren't covered by a reference with the same lifetime".</p>



<a name="228637961"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228637961" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228637961">(Mar 03 2021 at 18:04)</a>:</h4>
<p>Hmm, is it even possible to elide the two lifetimes in <code>-&gt; &amp;Ref&lt;T&gt;</code>?</p>



<a name="228692044"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228692044" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228692044">(Mar 04 2021 at 00:07)</a>:</h4>
<p>I agree with <span class="user-mention" data-user-id="125270">@scottmcm</span>'s split</p>



<a name="228692064"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228692064" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228692064">(Mar 04 2021 at 00:07)</a>:</h4>
<p>("those which participate in elision")</p>



<a name="228714728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228714728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228714728">(Mar 04 2021 at 04:25)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/228630999">said</a>:</p>
<blockquote>
<p>I agree with "lifetimes that participate in elison", though I also would like the qualifier "and aren't covered by a reference with the same lifetime".</p>
</blockquote>
<p>My understanding for "participate in elision" is that the <code>&amp;Formatter</code> and <code>&amp;mut Context</code> examples do not participate in elision, and thus those ones would not be linted by the "participate in elision" lint.</p>
<p>Were you thinking of a particular example of that?  I tried <code>fn foo(x: &amp;Ref&lt;i32&gt;) -&gt; &amp;i32</code>, but that's already an error.  I guess <code>fn bar(x: &amp;i32) -&gt; &amp;Ref&lt;i32&gt;</code> compiles today?  I don't know that I've ever seen such a thing in real code, though -- I kinda wish it didn't work, in fact, since it's <code>-&gt; &amp;'a Ref&lt;'a, i32&gt;</code>, and the lifetime getting put in both places seems sketchy.</p>



<a name="228754561"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228754561" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228754561">(Mar 04 2021 at 11:21)</a>:</h4>
<p>I think the example that <span class="user-mention" data-user-id="239881">@Josh Triplett</span> was thinking of is</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="k">fn</span> <span class="nf">foo</span><span class="p">(</span><span class="n">x</span>: <span class="nc">Ref</span><span class="o">&lt;</span><span class="kt">i32</span><span class="o">&gt;</span><span class="p">)</span><span class="w"></span>
</code></pre></div>



<a name="228806565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228806565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Daniel Henry-Mantilla <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228806565">(Mar 04 2021 at 16:41)</a>:</h4>
<p>Tangentially, macro authors may wish to have a lint to deny the elided lifetimes in <em>all</em> paths (if we ignore the fact that for technical reasons,  <code>elided_lifetimes_in_paths</code> can currently only be applied at the crate level), so as to be able to spot potential "higher-order" types and similar stuff. See <a href="https://github.com/rust-lang/rust/issues/71957#issuecomment-789709322">this comment</a>.</p>
<ul>
<li>(Relatedly, a lint against implicitly elided lifetimes in trait objects would be nice, although macros don't need that one that bad (thanks to <code>deny(bare_trait_objects)</code>, these cannot disguise as classic type paths))</li>
</ul>



<a name="228824357"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228824357" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228824357">(Mar 04 2021 at 18:23)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> I was actually thinking of <code>&amp;Ref&lt;i32&gt;</code>, where there's a "covering" reference and thus a covering lifetime; that's the case where I don't think you need to be required to write <code>&amp;Ref&lt;'_, i32&gt;</code> or similar.</p>



<a name="228824447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228824447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228824447">(Mar 04 2021 at 18:24)</a>:</h4>
<p>That's what I meant, but from the other perspective</p>



<a name="228824454"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228824454" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228824454">(Mar 04 2021 at 18:24)</a>:</h4>
<p><span class="user-mention" data-user-id="232018">@Daniel Henry-Mantilla</span> Yeah, I think it's reasonable to have an allow-by-default lint against all elision.</p>



<a name="228824483"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228824483" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228824483">(Mar 04 2021 at 18:24)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Ah, got it.</p>



<a name="228824532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228824532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228824532">(Mar 04 2021 at 18:24)</a>:</h4>
<p>Yes, the example you gave is a case where I <em>would</em> want to see the <code>'_</code> added.</p>



<a name="228831334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/228831334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#228831334">(Mar 04 2021 at 19:06)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/228824357">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> I was actually thinking of <code>&amp;Ref&lt;i32&gt;</code>, where there's a "covering" reference and thus a covering lifetime; that's the case where I don't think you need to be required to write <code>&amp;Ref&lt;'_, i32&gt;</code> or similar.</p>
</blockquote>
<p>Can you show the full signature you were thinking about?  Because <code>&amp;Ref&lt;i32&gt;</code> behaves differently in different places.</p>



<a name="229077378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/229077378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#229077378">(Mar 06 2021 at 07:56)</a>:</h4>
<p>I was thinking of something like <code>fn f(x: &amp;Something) -&gt; &amp;Ref&lt;T&gt;</code>.</p>



<a name="229077396"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/229077396" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#229077396">(Mar 06 2021 at 07:57)</a>:</h4>
<p>Or something similar with &amp;Ref in the parameter.</p>



<a name="229102525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/229102525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Daniel Henry-Mantilla <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#229102525">(Mar 06 2021 at 14:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/229077378">said</a>:</p>
<blockquote>
<p>I was thinking of something like <code>fn f(x: &amp;Something) -&gt; &amp;Ref&lt;T&gt;</code>.</p>
</blockquote>
<p>For that use case exactly I'm with <span class="user-mention" data-user-id="125270">@scottmcm</span> on this one: ideally lifetime elision in the return type would not apply to <em>nested</em> borrows, since that pattern is rarely the right one, and very often a code smell that leads to <a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2018&amp;gist=d8120cf3129eb6d05f621a549afa2d6e">over-restrictive APIs</a>. In other words, if lifetime elision exists, it's to alleviate writing the pervasive <em>idiomatic</em> patterns, and sadly <code>-&gt; &amp;Ref&lt;T&gt;</code> is not one of them. (Granted, for this example, spelling out <code>-&gt; &amp;Ref&lt;'_, T&gt;</code> does not improve the situation <em>that</em> much, although I do consider that it slightly improves it).</p>
<hr>
<p>As a parameter, on the other hand, if <code>&amp;Ref&lt;T&gt;</code> appears within a function signature that currently compiles, it necessarily means that it is not participating in the elision of the lifetimes in output position, so it not requiring the extra <code>'_, </code>  generic parameter is already covered by the "requiring it only for lifetimes participating in elision" rule <span aria-label="smile" class="emoji emoji-1f642" role="img" title="smile">:smile:</span></p>



<a name="229152713"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/229152713" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#229152713">(Mar 07 2021 at 03:43)</a>:</h4>
<p>That's a really good playground demo.  Makes me want to disable elision for that case.</p>



<a name="229516638"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/229516638" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#229516638">(Mar 09 2021 at 17:26)</a>:</h4>
<p>Note that on the question of whether there are compatbility lints that might require an edition to change into an error (because doing it across editions would introduce too much breakage): I'm going to look into which lints might fall in this category so we can discuss them.</p>



<a name="230014606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230014606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230014606">(Mar 12 2021 at 11:36)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> <span class="user-mention" data-user-id="116009">@nikomatsakis</span> Here is the list of currently deny-by-default future compatibility lints. We should discuss if we want to move some of these lints from their current position as deny-by-default to errors on an edition boundary. The criteria for this would be if we believe doing this across edition boundaries would lead to too much breakage. I assume the best way to go about that is a crater run. Thoughts?</p>
<div class="codehilite"><pre><span></span><code>pub_use_of_private_extern_crate
ambiguous-associated-items
conflicting-repr-hints
ill-formed-attribute-input
incomplete-include
invalid-type-param-default
macro-expanded-macro-exports-accessed-by-absolute-paths
missing-fragment-specifier
order-dependent-trait-objects
patterns-in-fns-without-body
soft-unstable
</code></pre></div>



<a name="230030271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230030271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230030271">(Mar 12 2021 at 13:45)</a>:</h4>
<p>Is that the criteria?</p>



<a name="230030354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230030354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230030354">(Mar 12 2021 at 13:46)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> I'm feeling a bit adrift on this topic, is there a "summary write-up" of the work we have done and the work to do somewhere?</p>



<a name="230030371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230030371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230030371">(Mar 12 2021 at 13:46)</a>:</h4>
<p>sorry for my inability to retain context</p>



<a name="230030482"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230030482" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230030482">(Mar 12 2021 at 13:47)</a>:</h4>
<p>I think the criteria <span class="user-mention" data-user-id="224872">@rylev</span> meant should be the opposite, right? That is, "moving them to hard error across all editions leads to too much breakage"</p>



<a name="230039712"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230039712" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230039712">(Mar 12 2021 at 14:43)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> is correct - my writing is super unclear (sorry about that), but that's the way to interpret what I meant.</p>



<a name="230039742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230039742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230039742">(Mar 12 2021 at 14:43)</a>:</h4>
<p>I can do a short write up of this issue.</p>



<a name="230067566"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230067566" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230067566">(Mar 12 2021 at 17:28)</a>:</h4>
<p>I don't think the criteria should just be that making them a hard error in every addition doesn't produce substantial breakage in crater. I think the criteria should also be that we gain substantial value by making them a hard error. For example, if we need to reclaim or repurpose syntax, or if we can give better error messages, or similar.</p>



<a name="230067644"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230067644" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230067644">(Mar 12 2021 at 17:28)</a>:</h4>
<p>(or if there's any soundness issue)</p>



<a name="230074242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230074242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230074242">(Mar 12 2021 at 18:13)</a>:</h4>
<p>I looked at patterns-in-fns-without-body, which points to <a href="https://github.com/rust-lang/rust/issues/35203">https://github.com/rust-lang/rust/issues/35203</a>, which says</p>
<blockquote>
<p>By restricting patterns in body-less function signatures to ident: TYPE we can make argument names optional and accept simply a TYPE in argument position (type T = fn(u8)) without introducing parsing ambiguities.</p>
</blockquote>
<p>But didn't we do a change for 2018 that says you <em>cannot</em> provide just a type for a trait-method-without-body?  So I feel like this needs reconsidering.</p>



<a name="230074307"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230074307" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230074307">(Mar 12 2021 at 18:13)</a>:</h4>
<p>In general, I wonder if any future-incompat from before editions existed ought to be reconsidered to determine whether it should be an edition change instead.</p>



<a name="230074983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230074983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230074983">(Mar 12 2021 at 18:19)</a>:</h4>
<p>That one lint looks like it has different parts -- the "it accepted <code>fn foo(&amp;x: u8);</code> in a trait" part seems like definitely a bug, and worthy of future-incompat.  But the part that's rejecting <code>fn foo(mut x: u8);</code>?  That seems worth linting, but I don't know that it deserves a hard error (maybe ever).</p>



<a name="230078679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230078679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Eric Huss <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230078679">(Mar 12 2021 at 18:46)</a>:</h4>
<p>I think petrochenkov gave a pretty good reasoning for not allowing that <a href="https://github.com/rust-lang/rust/issues/35203#issuecomment-345443920">here</a>.  The <code>mut</code> serves no purpose, does it?  </p>
<p>If it becomes a hard error, it can still provide a suggestion to remove it.  I think it follows similar reasoning that other patterns are hard errors, like <code>ref foo</code>.  It seems strange to me to have this in-between status just for <code>mut ident</code>.</p>



<a name="230323833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230323833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230323833">(Mar 15 2021 at 10:43)</a>:</h4>
<p><span class="user-mention" data-user-id="125270">@scottmcm</span> <span class="user-mention" data-user-id="116009">@nikomatsakis</span> In trying to write up the question posed above about moving deny-by-default future incompatible warnings to hard errors (and when such a transition needs to happen on an edition boundary), I wrote up a document detailing future incompatibility warnings. It would be nice to come to some sort of documented conclusion about this: <a href="https://hackmd.io/@ryanlevick/SkmhZ227d">https://hackmd.io/@ryanlevick/SkmhZ227d</a> cc <span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> who has also been involved in these discussions and seems to remember context from the 2018 edition discussions.</p>



<a name="230350408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230350408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Eric Huss <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230350408">(Mar 15 2021 at 14:11)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> I read over your document. I have a few comments about it:</p>
<p>There are two classes of edition lints.  "Compatibility" lints which are usually allow-by-default, and only enabled on the edition boundary and transition is done with <code>cargo fix --edition</code>.  The other category is the "idioms" lints, which are stylistic.  <code>bare-trait-objects</code> is an example (I don't think <code>array-into-iter</code> is an edition lint).  These can be transitioned at any time with <code>cargo fix --edition-idioms</code>. Idiom lints have a more complex history, as most of them are still in the "allow" state.  There was intent to turn them on, but I think after 2018, nobody wanted to work on them.</p>
<p>Also, in terms of procedure for elevating future-compat lints, I think the future-incompat-report system will be an important part of that story. The initial implementation just landed on nightly about a week ago.  I think once that stabilizes, that will provide valuable information on how safe it will be to elevate future-compat lints.</p>



<a name="230356895"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230356895" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230356895">(Mar 15 2021 at 14:50)</a>:</h4>
<p><span class="user-mention" data-user-id="120518">@Eric Huss</span> thanks for the context. I can update the document with this. As for <code>array-into-iter</code>, it is listed <a href="https://github.com/rust-lang/rust/blob/7a7bbdb3abfa72ca717ef54ffc4f307d0d44de67/compiler/rustc_lint/src/array_into_iter.rs#L35-L45">in the compiler</a> as a <code>future_incompatible</code>. This is an example where it seems like the way the lints are treated in the compiler vs how we think about them is not 100% aligned.  </p>
<p>I'll make sure that I add a section about the future-incompat-report system.</p>



<a name="230588875"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/230588875" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#230588875">(Mar 16 2021 at 20:50)</a>:</h4>
<p>First PR is out for this: <a href="https://github.com/rust-lang/rust/pull/83213">https://github.com/rust-lang/rust/pull/83213</a></p>



<a name="231129597"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231129597" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231129597">(Mar 20 2021 at 07:35)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> Left some comments. The analysis of FCWs is mostly accurate; but loads of details about editions are missed, in particular your document kinda conflates idiom and migration lints. Happy to talk more about this if you need.</p>



<a name="231141164"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231141164" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231141164">(Mar 20 2021 at 11:38)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> we are revisiting some of these terms =)</p>



<a name="231141197"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231141197" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231141197">(Mar 20 2021 at 11:39)</a>:</h4>
<p>trying to write-up an overall policy around lints, deprecatiosn, etc that where editions are one tool but ultimately you classify the warning according to some criteria and goals and it guides you to the right thing</p>



<a name="231149704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231149704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231149704">(Mar 20 2021 at 14:30)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Makes sense, but it feels weird to reuse the same terminology that way? And the first PR that has come out of the doc (<a href="https://github.com/rust-lang/rust/pull/83213#issuecomment-803266195">https://github.com/rust-lang/rust/pull/83213#issuecomment-803266195</a>) got it "wrong" according to the existing edition policy -- it introduces a hard error but does not introduce anything that works with <code>cargo fix</code> to fix it</p>



<a name="231149726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231149726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231149726">(Mar 20 2021 at 14:30)</a>:</h4>
<p>Not to pick on Ryan but that's a _pretty large_ change from the old policy</p>



<a name="231150679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231150679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231150679">(Mar 20 2021 at 14:48)</a>:</h4>
<p>My hesitation with "we're revisiting this" is that the current policy is one that took multiple false starts to get to because back then we also didn't think it was necessary, and then after a bunch of work realized it was, so I'm wary of changing it without having the same context because I feel like we'll fall down the same rabbithole.</p>



<a name="231150763"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231150763" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231150763">(Mar 20 2021 at 14:50)</a>:</h4>
<p>Revisiting just the terms is fine i guess, though making one of the terms mean the other one seems confusing</p>



<a name="231324704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231324704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231324704">(Mar 22 2021 at 15:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="132040">Manish Goregaokar</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/231149704">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> Makes sense, but it feels weird to reuse the same terminology that way? And the first PR that has come out of the doc (<a href="https://github.com/rust-lang/rust/pull/83213#issuecomment-803266195">https://github.com/rust-lang/rust/pull/83213#issuecomment-803266195</a>) got it "wrong" according to the existing edition policy -- it introduces a hard error but does not introduce anything that works with <code>cargo fix</code> to fix it</p>
</blockquote>
<p>This might be because I (mistakenly?) thought it would be fine to introduce the <code>cargo fix</code> in a separate PR. There is definitely a plan to have a fix.</p>



<a name="231326679"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231326679" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231326679">(Mar 22 2021 at 15:13)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> I left a comment on the PR but I can't quite tell what you are saying. I feel like there are a few entangled threads I would like to sort out. One of them is a question of <em>policy</em> and one of them is a more a <em>technical question</em> -- what will <em>actually work</em>.</p>
<p>I'd love to hear what you see as the 'hard constraints' and other key insights that you found in 2018 so we can make sure we are preserving them.</p>



<a name="231327564"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231327564" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231327564">(Mar 22 2021 at 15:17)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> It seems like there was a bunch of decisions reached in 2018, but I've not been able to find documentation on such decisions - I wasn't around for such discussions in 2018 so I think I'm missing a lot of context. If you can point me to that documentation, that would be <em>really</em> great. I think we're interested in potentially progressing the policy forward with the learnings of the past 3 years, but having the status quo policy in clear prose for us to compare to would make this much easier.</p>



<a name="231341320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231341320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231341320">(Mar 22 2021 at 16:27)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> Unfortunatley there isn't any documentation.</p>
<p>For context the RFCs in 2018 were extremely light on how the migration would work. I signed up to implement the migrations, but when I started I realized that there wasn't a proper documented plan. That would have been fine except each lang team member seemed to have a _different_ idea as to what the plan should be. So I had to do some ad-hoc design work on this, the whole concept of the migration/idiom split comes from weeks of trying other things, discussing a lot, and eventually figuring out what we _actually_ needed. After which we implemented a lot of the lints, but had to go back to the drawing board when we discovered that some imperfections which were purported to not be a problem actually were one, and since these imperfections had never been gamed out we had to re-plan a couple things.</p>
<p>Basically, what should have been a couple weeks of work turned into months of work, and people were far too burnt out to actually document any of this after since it had already ballooned in scope immensely. I really wanted to write a separate RFC that constrained edition changes in the future to take some of these steps, but it was kinda too stressful (there were also some arguments with specific toxic individuals i would have had to have to just justify that this is important to think about, that part is no longer a problem). By the time I felt less stressed out it was already 2020, at which point it was suggested this be rolled into the 2021 RFC. I did say a bunch of this during its initial stages and a lot of this was worked in.</p>
<blockquote>
<p>This might be because I (mistakenly?) thought it would be fine to introduce the cargo fix in a separate PR. There is definitely a plan to have a fix.</p>
</blockquote>
<p>It's totally fine if done in a separate PR, I'm very strongly of the opinion that the _plan should be written down, along with contingencies_.</p>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> Yeah I'm working on writing this down. I'll first write down the policy  I _wanted_ to write after 2018, and then the technical status quo, and you can lift whatever you need from it.</p>



<a name="231344361"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231344361" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231344361">(Mar 22 2021 at 16:45)</a>:</h4>
<p>I'm realizing now that I should not have relied on there being "compiler/lang team members who remember all the nuances of 2018" for this to work well in 2021, sorry about that</p>



<a name="231354852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231354852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231354852">(Mar 22 2021 at 17:50)</a>:</h4>
<p>OK. So the main constraints I remember are:</p>
<ul>
<li>Automated migrations target the intersection of editions, so that things can be moved piecemeal; this requires ensuring that there <em>is</em> a satisfying intersection.</li>
<li>We can have lints ("idiom lints") that do cleanup in the newer editions. We've often debated the semantics of this, as another way to view things is that these are just cleanup lints that trigger only when they're applicable (and hence they don't fire in previous editions, to avoid false warnings), but I think this is mostly a question of terminology. </li>
</ul>
<p>Based on the PR, it sounded like there were a few other details about lint groups and things that need to be spelled out (and in particular if there are challenges from having a single lint in multiple groups; I'd like to understand that better, but we could always have clones of lints if needed). </p>
<p>We've since been overhauling the policy to try and have a cleaner way for us to talk about why we're making the change and what that means -- I view editions as part of this change but not the entirety of it, they're a tool in the toolbox. I think that's effectively orthogonal.</p>



<a name="231402850"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231402850" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231402850">(Mar 22 2021 at 23:57)</a>:</h4>
<p>Alright, wrote down the policy from 2018, plus details on implementation, in <a href="https://hackmd.io/@nbw0Mih0RLieoV6JBAtI3Q/SyFshP84O">https://hackmd.io/@nbw0Mih0RLieoV6JBAtI3Q/SyFshP84O</a> cc <span class="user-mention" data-user-id="224872">@rylev</span> <span class="user-mention" data-user-id="116009">@nikomatsakis</span> . Please let me know if it's missing something!</p>



<a name="231649818"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231649818" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231649818">(Mar 24 2021 at 15:06)</a>:</h4>
<p>Thanks <span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> -- will take a look soon!</p>



<a name="231670602"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/231670602" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#231670602">(Mar 24 2021 at 17:02)</a>:</h4>
<p>I'm running behind this week, but I hope to be able to look at this tomorrow.</p>



<a name="233515610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/233515610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#233515610">(Apr 07 2021 at 15:57)</a>:</h4>
<p>I finally had enough time to read this. Thank you <span class="user-mention" data-user-id="132040">@Manish Goregaokar</span>! I think it looks good, and I think the thinking lines up relatively well with the talks we were having for 2021. We should definitely get this stored in some place so we don't end up doing the same exercise for the next Rust edition. <br>
That being said, I think the most pressing issue we're facing is not answered by this document although it is mentioned. We have two idiom lints that we want to turn into hard errors in Rust 2021. We need to make sure there's a way to ensure that migration lints work even if the lint has been allowed.</p>



<a name="233516015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/233516015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#233516015">(Apr 07 2021 at 15:59)</a>:</h4>
<p>On the <a href="https://github.com/rust-lang/rust/pull/83213#issuecomment-812545425">PR</a> itself, there's still ambiguity on whether this question needs to be solved before merging or if it's ok to merge and then figure out the plan.</p>



<a name="233516586"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/233516586" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#233516586">(Apr 07 2021 at 16:02)</a>:</h4>
<p>The issue is still nominated for the lang team discussion. Perhaps the lang team needs to discuss what migration path for such changes they would like to see happen. Though it seems like the PR might be able to be merged as is and any concerns around migration can be fixed in later PRs.</p>



<a name="233516890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/233516890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#233516890">(Apr 07 2021 at 16:04)</a>:</h4>
<p>(with the small changes requests from Niko applied of course)</p>



<a name="233526555"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/233526555" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#233526555">(Apr 07 2021 at 17:06)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> I don't think there's ambiguity on the PR -- I've stated this multiple times; but my only blocking concern there is that the lint is currently not hooked up to the migration lint machinery. We can worry about whether lint-was-allowed is in scope later, that's fine. (I woudl prefer that in the future these things get figured out first as detailed in my doc, but it's minor here)</p>



<a name="234172341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172341">(Apr 12 2021 at 14:50)</a>:</h4>
<p>OK, I too finally read this. Apologies <span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> for being slow, and thank you for doing a detailed write-up.</p>



<a name="234172401"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172401" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172401">(Apr 12 2021 at 14:50)</a>:</h4>
<p>I will integrate some of that text into the 2021 RFC as well, as requested</p>



<a name="234172576"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172576" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172576">(Apr 12 2021 at 14:51)</a>:</h4>
<p>I do have a few thoughts:</p>
<ul>
<li>I'm not convinced idiom lints are an important thing to distinguish going forward. I think these are basically just style lints, but like any lint, they should avoid false warnings and not offer inapplicable suggestions.</li>
</ul>



<a name="234172782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172782">(Apr 12 2021 at 14:52)</a>:</h4>
<ul>
<li>The point about the danger of compatibility lints serving multiple purposes is well taken. I am debating what I think is the best way to fix this. I definitely think there are times when we will want to have things that are both <em>deprecated</em> and will become a hard error in the next edition -- in fact, this seems fairly common.</li>
</ul>



<a name="234172910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172910">(Apr 12 2021 at 14:53)</a>:</h4>
<p>I think in my ideal world we would be able to (a) have lints in multiple groups and (b) have <code>cargo fix</code> supply the "inverse" of cap-lints, a kind of "minimum lint severity" for things that have to do with migration. Maybe a better way to think of it would be that it has some kind of option that just overrides all other lint settings and says <strong>always trigger lints in this group</strong></p>



<a name="234172978"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234172978" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234172978">(Apr 12 2021 at 14:54)</a>:</h4>
<p>(OTOH, is it useful for folks to be able to <code>#[allow]</code> lints and things if they know cargo fix will misbehave? not sure.)</p>



<a name="234173135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234173135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234173135">(Apr 12 2021 at 14:54)</a>:</h4>
<p>Regardless, I'd like to separate out this question, which is something of an impl concern, from how we message things to people. I think what I would recommend is that RFCs have to detail out any migrations required (i.e., compatibility), and then that they also discuss style lints and rewrites, but those are not considered part of the edition migration <em>per se</em>.</p>



<a name="234174024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234174024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234174024">(Apr 12 2021 at 15:00)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> thanks! Not all idiom lints are "just style lints" -- for example, for the 2018 path updates there _had_ to be a two step process, where the intermediate state was not great at all. The two-step process is important for flexibility; I think there's a distinction between "some things don't need to be idiom lints and can just be regular future incompat" and "some changes need a compat + idiom lint to be robust"</p>



<a name="234174360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234174360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234174360">(Apr 12 2021 at 15:01)</a>:</h4>
<p>I don't think RFCs should be required to include "pure style lint" idiom lints; but if an RFC has a two-step migration process I think it should include both steps because both steps integrate well</p>



<a name="234174665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234174665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234174665">(Apr 12 2021 at 15:01)</a>:</h4>
<p>I'm saying this because when it came to the path RFC I went around talking to each lang stakeholder and they had a completely different (and often unworkable) idea of how the migration would work, and I had to eventually sit down and invent the two-step process -- the two-step process is, for some changes, critical to a proper migration</p>



<a name="234175038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234175038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234175038">(Apr 12 2021 at 15:03)</a>:</h4>
<p>I don't think the fact that there had to be a two-step process means we need a category for it</p>



<a name="234175084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234175084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234175084">(Apr 12 2021 at 15:03)</a>:</h4>
<p>I think we would just fire those lints all the time</p>



<a name="234176033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234176033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234176033">(Apr 12 2021 at 15:07)</a>:</h4>
<p>but what you're saying makes sense about detailing out the two step plan</p>



<a name="234176066"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234176066" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234176066">(Apr 12 2021 at 15:07)</a>:</h4>
<p>(and I would expect to do so)</p>



<a name="234176157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234176157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234176157">(Apr 12 2021 at 15:07)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> yeah that's totally fair! The category existed because at the time there were concerns about making them unconditionally Warn.</p>
<p>But I do feel like the _conceptual_ category -- to be included in relevant RFCs, to be recognized in cargo fix -- should exist</p>



<a name="234176212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234176212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234176212">(Apr 12 2021 at 15:08)</a>:</h4>
<p>as in, we should talk about it</p>



<a name="234203891"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234203891" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234203891">(Apr 12 2021 at 18:05)</a>:</h4>
<p>So <span class="user-mention" data-user-id="224872">@rylev</span>, <span class="user-mention" data-user-id="310399">@Mara</span>, <span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> -- I <a href="https://gist.github.com/nikomatsakis/9e3e1b9117839aa80a803b1faf320ef9">wrote up the idea</a> to manage having a single lint that is both in the rust-2021 editions group <em>and</em> elsewhere. After writing it up, I did start to wonder if it's worth the trouble, versus having a fresh copy of the lint that is <em>just</em> for the migration (and writing a bit of logic to make that nice and easy to do).</p>



<a name="234203932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234203932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234203932">(Apr 12 2021 at 18:05)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> I took some educated guesses as to what makes it hard to have a lint be a member of multiple groups.</p>



<a name="234203955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234203955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234203955">(Apr 12 2021 at 18:05)</a>:</h4>
<p>sweet</p>



<a name="234203975"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234203975" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234203975">(Apr 12 2021 at 18:05)</a>:</h4>
<p>And yeah I had proposed just duplicatinh the lint :)</p>



<a name="234203997"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234203997" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234203997">(Apr 12 2021 at 18:06)</a>:</h4>
<p>Right</p>



<a name="234204045"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204045" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204045">(Apr 12 2021 at 18:06)</a>:</h4>
<p>that (initially) seemed gross to me but .. otoh... who cares</p>



<a name="234204075"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204075" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204075">(Apr 12 2021 at 18:06)</a>:</h4>
<p>especially if the "migration lints" are conisdered kind of "internal" that users don't see</p>



<a name="234204173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204173">(Apr 12 2021 at 18:07)</a>:</h4>
<p>(i.e., because they are enabled just by <code>cargo rustfix</code>, and then just processed automatically)</p>



<a name="234204184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204184">(Apr 12 2021 at 18:07)</a>:</h4>
<p>I think this is largely true, right?</p>



<a name="234204505"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204505" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204505">(Apr 12 2021 at 18:09)</a>:</h4>
<p>Yeah, there should be no reason I think to enable a specific one (vs. the whole set), too.</p>



<a name="234204639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234204639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234204639">(Apr 12 2021 at 18:10)</a>:</h4>
<p>Or at least not a common one</p>



<a name="234208650"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234208650" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234208650">(Apr 12 2021 at 18:35)</a>:</h4>
<p>Yep</p>



<a name="234209084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234209084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234209084">(Apr 12 2021 at 18:38)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> document looks good. Would it be possible to also incorporate the part of my document pertaining to edition migrations into the 2021 RFC? tbh I've wanted to land this as an RFC separately for ages, and i'm happy to do that, but it feels like there's already text that _nearly_ gets there</p>



<a name="234209302"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234209302" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234209302">(Apr 12 2021 at 18:40)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> by "document" do you mean the gist I wrote?</p>



<a name="234209324"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234209324" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234209324">(Apr 12 2021 at 18:40)</a>:</h4>
<p>I was going to copy some of that text you wrote into the 2021 RFC, probably right now actually</p>



<a name="234209347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234209347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234209347">(Apr 12 2021 at 18:40)</a>:</h4>
<p>I'm trying to catch up on edition related tasks today as I've been neglecting them...</p>



<a name="234209400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234209400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234209400">(Apr 12 2021 at 18:41)</a>:</h4>
<p>but I'm not sure which parts you mean :)</p>



<a name="234214573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214573">(Apr 12 2021 at 19:17)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> I remembered one other thing that your write-up doesn't cover</p>



<a name="234214601"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214601" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214601">(Apr 12 2021 at 19:17)</a>:</h4>
<p>it's pretty important that, for each change, we specify what bit of <em>syntax</em> is used to determine the edition</p>



<a name="234214607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214607">(Apr 12 2021 at 19:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> yeah document = gist</p>



<a name="234214610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214610">(Apr 12 2021 at 19:17)</a>:</h4>
<p>i.e., "the edition is tied to the method name" or something</p>



<a name="234214620"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214620" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214620">(Apr 12 2021 at 19:17)</a>:</h4>
<p>that's kind of 'lang team rules'</p>



<a name="234214626"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214626" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214626">(Apr 12 2021 at 19:17)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> oh damn that is important yeah</p>



<a name="234214631"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214631" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214631">(Apr 12 2021 at 19:17)</a>:</h4>
<p>(for lang changes)</p>



<a name="234214637"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214637" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214637">(Apr 12 2021 at 19:17)</a>:</h4>
<p>so maybe it doesn't belong in this RFC, but I might include it anyway</p>



<a name="234214786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234214786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234214786">(Apr 12 2021 at 19:18)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> the part of the document I'm thinking of is mostly the "edition migrations from the designer's perspective" though the other two sections help motivate that</p>



<a name="234215057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215057">(Apr 12 2021 at 19:21)</a>:</h4>
<p>actually, specifically the "requirements" bit</p>



<a name="234215061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215061">(Apr 12 2021 at 19:21)</a>:</h4>
<p><a href="https://hackmd.io/@nbw0Mih0RLieoV6JBAtI3Q/SyFshP84O#Migration-plan-requirements-on-proposals-involving-edition-breaking-changes">https://hackmd.io/@nbw0Mih0RLieoV6JBAtI3Q/SyFshP84O#Migration-plan-requirements-on-proposals-involving-edition-breaking-changes</a></p>



<a name="234215090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215090">(Apr 12 2021 at 19:21)</a>:</h4>
<p>right</p>



<a name="234215101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215101">(Apr 12 2021 at 19:21)</a>:</h4>
<p>I'm adding that text, slightly edited, into the RFC</p>



<a name="234215109"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215109" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215109">(Apr 12 2021 at 19:21)</a>:</h4>
<p>because i feel like this stuff isn't really written down in a place that can be referred to as "yeah follow this recipe for your edition"</p>



<a name="234215118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215118">(Apr 12 2021 at 19:21)</a>:</h4>
<p>perfect ty</p>



<a name="234215159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215159">(Apr 12 2021 at 19:21)</a>:</h4>
<p>very interested in how you write the "what syntax determines the edition" bit because iirc it's super subtle</p>



<a name="234215225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215225">(Apr 12 2021 at 19:22)</a>:</h4>
<p>but you can also defer that subtlety onto the feature designer <span aria-label="shrug" class="emoji emoji-1f937" role="img" title="shrug">:shrug:</span></p>



<a name="234215321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215321">(Apr 12 2021 at 19:22)</a>:</h4>
<p><span class="user-mention silent" data-user-id="132040">Manish Goregaokar</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/234215159">said</a>:</p>
<blockquote>
<p>very interested in how you write the "what syntax determines the edition" bit because iirc it's super subtle</p>
</blockquote>
<p>this is what I wrote</p>



<a name="234215326"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215326" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215326">(Apr 12 2021 at 19:22)</a>:</h4>
<blockquote>
<h3>Determining the current edition</h3>
<p>Altough there is an "ambient" edition for the crate that is specified as part of <code>Cargo.toml</code>, individual bits of code can be tied to earlier editions due to the interactions of macros. For example, if a Rust 2021 crate invokes a macro from a Rust 2018 crate, the body of that macro may be interpreted using Rust 2018 rules. For this reason, whenever an edition change is proposed, it's important to specify the tokens from which the edition is determined.</p>
<p>As an example, if we are introducing a new keyword, then the edition will be taken from the keyword itself. If we were to make a change to the semantics of the <code>+</code> operator, we might say that the current edition is determined from the <code>+</code> token. This way, if a macro author were to write <code>$a + $b</code>, then this expression would use the edition rules from the macro definition (which contained the <code>+</code> token). Additions that defined in the <code>$a</code> expression would use the edition from which <code>$a</code> was derived.<br>
</p>
</blockquote>



<a name="234215375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215375">(Apr 12 2021 at 19:23)</a>:</h4>
<p>it's not my clearest writing, really, I could give an example at least</p>



<a name="234215397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215397">(Apr 12 2021 at 19:23)</a>:</h4>
<p>but I'd also not mind evolving this in the form of lang team documentation :)</p>



<a name="234215432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215432">(Apr 12 2021 at 19:23)</a>:</h4>
<p>really I feel it's "mildly" out of scope for this RFC, which is more focused on end-user experience</p>



<a name="234215450"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234215450" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234215450">(Apr 12 2021 at 19:24)</a>:</h4>
<p>but only mildly, since it also talks about things like changes being skin deep</p>



<a name="234222156"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222156" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222156">(Apr 12 2021 at 20:08)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> (has this not been pushed yet? the latest commit on the rfc doesn't have anything related)</p>



<a name="234222169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222169">(Apr 12 2021 at 20:09)</a>:</h4>
<p>i like this description though! :)</p>



<a name="234222195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222195">(Apr 12 2021 at 20:09)</a>:</h4>
<p>and yeah it's mildly out of scope but it's good to have imo</p>



<a name="234222240"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222240" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222240">(Apr 12 2021 at 20:09)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> whoops, fixed</p>



<a name="234222257"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222257" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222257">(Apr 12 2021 at 20:09)</a>:</h4>
<p>didn't notice that the push failed</p>



<a name="234222917"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234222917" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234222917">(Apr 12 2021 at 20:14)</a>:</h4>
<blockquote>
<p>describe cargo and don't be vague</p>
</blockquote>
<p>some brutal commit messages right there :)</p>



<a name="234223077"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234223077" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234223077">(Apr 12 2021 at 20:15)</a>:</h4>
<p>unrelated to this discussion but i appreciate the "editions are meant to be adopted" section</p>



<a name="234223141"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234223141" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234223141">(Apr 12 2021 at 20:16)</a>:</h4>
<p>good to have tone-setting</p>



<a name="234223178"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234223178" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Manish Goregaokar <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234223178">(Apr 12 2021 at 20:16)</a>:</h4>
<p>thanks for incorporating the feedback, it looks great wrt lints now :)</p>



<a name="234223969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234223969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234223969">(Apr 12 2021 at 20:22)</a>:</h4>
<p><span class="user-mention" data-user-id="132040">@Manish Goregaokar</span> great!</p>



<a name="234316933"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234316933" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234316933">(Apr 13 2021 at 12:38)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> did we land on a preferred route for handling migration lints. Do we want to add the flag to force lints for cargo fix to pick up or do we want to duplicate them? This impacts the edition lint PR I have open and which I'd like to finally get merged.</p>



<a name="234317255"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234317255" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234317255">(Apr 13 2021 at 12:40)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> I'm open to either route, but after going through the whole exercise of writing it up, I am leaning somewhat towards "just duplicate the lints and call it a day"</p>



<a name="234317301"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234317301" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234317301">(Apr 13 2021 at 12:40)</a>:</h4>
<p>the main work then is to make that possible in the code without requiring a lot of copy-and-paste</p>



<a name="234317449"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234317449" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234317449">(Apr 13 2021 at 12:41)</a>:</h4>
<p>Is the idea that those new lints are all allow by default (to prevent users from allowing them, and cargo fix would cause them to warn and apply fixes?</p>



<a name="234321431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234321431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234321431">(Apr 13 2021 at 13:09)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> yes</p>



<a name="234321440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234321440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234321440">(Apr 13 2021 at 13:09)</a>:</h4>
<p>I imagine something like this</p>



<a name="234321466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234321466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234321466">(Apr 13 2021 at 13:10)</a>:</h4>
<p>we have a macro for declaring lints, right?</p>



<a name="234321621"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234321621" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234321621">(Apr 13 2021 at 13:10)</a>:</h4>
<p>I was imagining that we might have an option to "tag" as an edition lint that would automatically make a duplicate lint with a distinct name in the relevant group, and we would also automatically "emit" the duplicate lint when we emit the regular lint</p>



<a name="234321646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234321646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234321646">(Apr 13 2021 at 13:11)</a>:</h4>
<p>the latter could be error-prone I guess  if there is some <code>if</code> that guards the overall test</p>



<a name="234328591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234328591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Eric Huss <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234328591">(Apr 13 2021 at 13:52)</a>:</h4>
<p>I'm curious about why lean towards duplicating lints instead of a new flag.  I would think a new flag should be relatively easy to implement, and more flexible.  Duplicating lints sounds like it would introduce lots of issues, like confusing diagnostics (if it uses different lint names), dealing with documentation, dealing with <code>-W help</code> output, etc.</p>
<p>Another option I was thinking of is just making the <code>rust-*-compatibility</code> group on the command-line take precedence over attributes.  That also doesn't sound <em>too</em> hard to implement, though I think I like the new flag route better.</p>



<a name="234336316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234336316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234336316">(Apr 13 2021 at 14:34)</a>:</h4>
<p>well, the main concern I had was the issue arond lints in multiple groups, but really I think those are orthogonal and we should fix them regardless</p>



<a name="234336341"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234336341" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234336341">(Apr 13 2021 at 14:34)</a>:</h4>
<p>I'm getting persuaded the other way now :)</p>



<a name="234336385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234336385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234336385">(Apr 13 2021 at 14:34)</a>:</h4>
<p><span class="user-mention" data-user-id="224872">@rylev</span> do you have an opinion? would you like mentoring one way or the other?</p>



<a name="234336412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234336412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234336412">(Apr 13 2021 at 14:34)</a>:</h4>
<p>I think I prefer a new flag to special casing the <code>rust-*-compatibility</code> groups</p>



<a name="234337825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234337825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234337825">(Apr 13 2021 at 14:42)</a>:</h4>
<p>I'm leaning towards adding the flag. It seems like it will ultimately the simpler and less edge-case prone way to do things.</p>



<a name="234337911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234337911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234337911">(Apr 13 2021 at 14:42)</a>:</h4>
<p>Given that I'm struggling to find the time to work on this right now, I think having some sort of mentoring would be really helpful to speed things up.</p>



<a name="234338039"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234338039" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> rylev <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234338039">(Apr 13 2021 at 14:43)</a>:</h4>
<p>I do think we can land the PR as is (after addressing a few of the outstanding and unrelated concerns)</p>



<a name="234358417"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234358417" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234358417">(Apr 13 2021 at 16:28)</a>:</h4>
<p>OK, <span class="user-mention" data-user-id="224872">@rylev</span>, I think we need an MCP for this</p>



<a name="234358440"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/234358440" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#234358440">(Apr 13 2021 at 16:28)</a>:</h4>
<p>I'll go ahead and convert that gist into an MCP and add in some mentoring notes</p>



<a name="238038685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238038685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238038685">(May 09 2021 at 14:15)</a>:</h4>
<p>What’s the current plan for elided lifetimes? Will the lint get upgraded in/alongside the new edition? I noticed in the tracking issue this still seemed undecided</p>



<a name="238038704"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238038704" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238038704">(May 09 2021 at 14:15)</a>:</h4>
<p>(Ran into some issues with incorrectly inferred lifetimes this week, so…)</p>



<a name="238038766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238038766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Mara <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238038766">(May 09 2021 at 14:16)</a>:</h4>
<p>only <code>bare-trait-objects</code> and <code>ellipsis-inclusive-range-patterns</code> get turned into hard errors</p>



<a name="238049739"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238049739" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238049739">(May 09 2021 at 17:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="226095">Dirkjan Ochtman</span> <a href="#narrow/stream/268952-edition-2021/topic/lint.20promotions/near/238038685">said</a>:</p>
<blockquote>
<p>What’s the current plan for elided lifetimes? Will the lint get upgraded in/alongside the new edition? I noticed in the tracking issue this still seemed undecided</p>
</blockquote>
<p>The last lang conversation I remember about it was that there was still uncertainty over exactly which parts are important enough to lint about, and that there was no desire to move to hard errors for any of them just yet, so the question was punted from this edition.</p>
<p>If anyone's interested in picking up some work on this, though, it'd be great to get the lint split to help focus the conversation on the different cases.  I recall there was general agreement that invisible lifetimes <em>that ended up being used in the return type</em> were more of a concern than others (particularly things like <code>&amp;Foo&lt;'_&gt;</code> vs just allowing <code>&amp;Foo</code>, when neither lifetime is used in the return type).  So separating those categories to potentially start to enable the less-controversial one (perhaps in all edition) would be great, if someone's interested in a project.</p>



<a name="238056949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238056949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238056949">(May 09 2021 at 19:46)</a>:</h4>
<p>Yeah, I think it would make sense to start by making them warn by default</p>



<a name="238056954"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238056954" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238056954">(May 09 2021 at 19:47)</a>:</h4>
<p>at least for the return value position</p>



<a name="238057007"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238057007" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Dirkjan Ochtman <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238057007">(May 09 2021 at 19:47)</a>:</h4>
<p>So what would be the proper venue/way to have that discussion? Just a Zulip thread in t-lang? Or should it be an MCP?</p>



<a name="238065730"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238065730" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238065730">(May 09 2021 at 22:15)</a>:</h4>
<p>There was a fairly extensive lang discussion in a meeting about lints, see <a href="https://hackmd.io/HETreGqPSRezlN109vgCnQ#ELIDED_LIFETIMES_IN_PATHS">https://hackmd.io/HETreGqPSRezlN109vgCnQ#ELIDED_LIFETIMES_IN_PATHS</a></p>
<p>From <a href="https://github.com/rust-lang/lang-team/blob/master/design-meeting-minutes/2021-02-24-Lints-and-editions.md">https://github.com/rust-lang/lang-team/blob/master/design-meeting-minutes/2021-02-24-Lints-and-editions.md</a>, which has a recording</p>



<a name="238065931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238065931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238065931">(May 09 2021 at 22:18)</a>:</h4>
<p>Personally, I think the next step is a code change to split the lint.  Then once that's happened, it could just be a lang FCP on a change to make the non-conrtoversial part warn-by-default.</p>
<p>(Perhaps coupled with a crater run where it was deny to see the impact, and better judge whether it's providing sufficient value.)</p>



<a name="238065965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/268952-edition%202021/topic/lint%20promotions/near/238065965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/268952-edition-2021/topic/lint.20promotions.html#238065965">(May 09 2021 at 22:19)</a>:</h4>
<p>To me, the starting point is "lint on lifetimes in arguments that elision made equal to an output lifetime", as the most useful case.  (And that avoids the things like <code>&amp;mut Context&lt;'_&gt;</code> for <code>&amp;mut Formatter&lt;'_&gt;</code> that a bunch of people are unhappy about with the current lint.)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>